§3. Построение проективных векторных изображений трёхмерных объектов
Как отмечено в § 6.4, с точки зрения упрощения линейных преобразований объектов, их геометрию необходимо зада-вать в виде:
1) набора однородных координат точек
P = {P0 ,P1 ,…,Pn},
гдеPi = (xi , yi , zi ,1),
(n+1) - общее число точек и
2) списка пар номеров точек, которые соединяются между собой отрезками,
L={I0,I1,…,Im},
где Ij=(ij0,ij1); ij0, ij1 - номера конечных точек линииjв набореPi ;
(m+1)– общее число линий.
При выполнении совокупности линейных и проективных преобразований необходимо:
I.Определить результирующую матрицу преобразований.Допустим, наборы (списки)PиL, описывающие геомет-рию объекта заданы. Если необходимо выполнить несколь-ко линейных и проективных преобразованийT1,…,Tkобъек-та, то необходимо
а) вначале найти матрицы элементарных преобразований
MT1 , MT2 ,… , MTk ; .
б) затем - результирующую матрицу преобразования в виде их произведения
MT = MTk *…* MT2 MT1 .
146
Замечание. Порядок матриц в произведении – обратный порядку выполнения преобразований.
II. В цикле поjот0доnумножить векторы однородных координат точекPi (i=0,1,…, n)на матрицуМТи занести преобразованные координаты точек в новый массив
Pn={Pn0 ,Pn1, … ,Pnn } .
III.Если необходимо (в случае нелинейных преобразований) – нормировать координаты точекPni по четвёртой компоненте.
IV. Выделить из координат Pni двумерные компоненты, необходимые для построения проекции.
V. По спискуLи списку двумерных координат точек по-строить искомое векторное изображение проекции объекта.
Пример.Задан куб (Рис. 7.1) с вершинами в точкахА(0,0,0), В(0,100,0), С(100,100,0), D(100,0,0), E(0,0,100), F(0,100,100), G(100,100,100), H(100,0,100).
Требуется последовательно выполнить следующие элемен-тарные преобразования каркасной модели объекта:
1) поворот вокруг оси Х на угол300;
2) поворот вокруг оси Yна угол600;
3) поворот вокруг оси Zна угол450;
4) сдвиг на вектор (200, 100 , 50);
5) ортогональную проекцию на плоскость z = 0.
Решениезадачи на языкеAutolispприведено в функцииkub. Алгоритм её работы следующий:
1. Строится список sppкоординат точек кубаA, B, C, D, E, F, G, H.
147
2. Строится список пар номеров spl = ( l0, l1,…, l11) пар вер-шин, образующих линии-рёбра куба.
3. С помощью стандартных функций rx, ry, rz, s, orzстроятся матрицы элементарных преобразованийmrx, mry, mrz, ms ,morz , осуществляющих преобразования 1) -5).
С помощью функции векторной алгебры умножения матриц mmопределяется итоговая матрица преобразованияmrez.
С помощью функции векторной алгебры умножения матрицы на вектор mv определяются новые координаты точек (списокsppn).
6. По списку линий splи спискуsppnкоординат строятся:
a) двухмерные проективные координаты проекций вершин куба(xi,yi);
б) векторы – линии требуемой проекции модели.
Текст функции kub
(defunc:kub()
;Формирование списка однородных коор-т точек куба (spp)
(setq a (list 0 0 0 1) b (list 100 0 0 1) c (list 100 100 0 1) d (list 0 100 0 1) e (list 0 0 100 1) f (list 100 0 100 1) g (list 100 100 100 1) h (list 100 0 100 1) spp (list a b c d e f g h ))
;Формирование списка пар точек в линиях (spl)
(setq l0 (list 0 1) l1 (list 1 2) l2 (list 2 3) l3 (list 3 0) l4 (list 4 5) l5 (list 5 6) l6 (list 6 7) l7 (list 7 4) l8 (list 0 4) l9 (list 1 5) l10 (list 2 6) l11 (list 3 7)spl (list l0 l1 l2 l3 l4 l5 l6 l7 l8 l9 l10 l11 ))
;Расчет матриц элементарных преобразований (mrx,mry,mrz,ms,morz)
(rx (/ pi 6)) (ry (/ pi 3)) (rx (/ pi 4)) (s 200. 100.50.) (orz0)
;Расчет итоговой матрицы сложного преобразования (mrеz)
(mm mry mrx 4) (mm mrz mrez 4) (mm ms mrez 4) (mm morz mrez 4)
;Пересчет координат точек (из массива spp в массив sppn)
148
(setq i 8) (repeat 8 (progn
(setq i (- i 1)) pt (nth i spp)
(mv mrez pt 4) (setq sppn (cons vec sppn))
))
;Вычерчивание линий (пары номеров точек –из массива spl ,
; новые координаты – из массива sppn
setq i 12) (repeat 12 (progn
(setq i (- i 1)) nomp (nth i spl)
; В цикле - извлечение полных однородных координат ;(x,y,z,1) краевых точек линий и формирование их 2-мерных ;координат (x,y)
(setq p1 (nth (nth 0 nomp) sppn) p2 (nth (nth 1 nomp) sppn))
(setq pt1 (list (nth 0 p1) (nth 1 p1)) pt2 (list (nth 0 p2) (nth 1 p2))
; В цикле - вычерчивание линий
(command «line» pt1 pt2 «»)
)) )
В результате выполнения данной функции получаем сле-дующее графическое изображение куба (Рис. 7.5):
Задачи.
I. По заданному типу геометрического объекта и набору его вершин:
а) построить каркасную модель (при помощи списков однородных координат вершин и пар номеров вершин, отражающих все рёбра);
б) построить матрицы всех элементарных преобразований и итоговую мастрицу сложного преобразования;
в) найти проективные координаты вершин объекта и построить его заданную проекцию.
1. Задана пирамида с вершинами А(300,100,0), B(200,100,0), C(200,200,0), D(300,200,0), Е(250,150,200).
Требуется: а) повернуть её вокруг ребра ADна угол600; б) сдвинуть на вектор(-200,100,200); в) построить изомет-рическую проекцию.
149
Рис.7.5
2. Задана пирамида с вершинами А(100,100,100), B(200, 130, 100), C(120,200,100), D(100,100,200).
Требуется: а) повернуть её вокруг ребра ADна угол1500; б) построить угловую пространственную проекцию с точками схода(500,0,0), (0,0,500).
3. Задана пирамида с вершинами А(50,50,0), B(50, 100, 0), C(100, 100, 0), D(100,50,0), E(75,75,100).
Требуется: а) сдвинуть её на вектор (200,500,300); б) по-строить диметрическую проекцию с величиной коэффици-ентаk = 1/4.
4. Задана пирамида с вершинами А(60,60,100), B(60, 120,120), C(100,90,140), D(80,80,200).
150
Требуется: а) повернуть её вокруг оси, проходящей через точки Е=(0,0,0)иF=(0,100,0), на угол1200; б) построить изометрическую проекцию.
5. Задана пирамида с вершинами А(100,100,100), B(200, 100, 100), C(100,200,100), D(100,100,200).
Требуется: а) повернуть её на угол 1200 вокруг ребраАD; б) сдвинуть на вектор(200,100,300); в) построить димет-рическую проекцию с величиной коэффициентаk = 0,2.
6. Задана призма с вершинами А(20,30,0), B(120,30,0), C(70, 100, 0), D(20,30,100), Е(120,30,100), F(70,100,100).Требуется:а) повернуть её вокруг ребраCFна угол1050; б) построить угловую перспективу с точками схода(200,0,0)и(0,400,0).
7. Задана призма с вершинами А(50,50,0), B(50,150,0), C(150,50,0), D(50,50,100), Е(50,150,100), F(150,50,100).
Требуется: а) повернуть её вокруг ребра AB на угол450; б) повернуть вокруг осиХ на угол600; в) сдвинуть на вектор(200,100,50); г) ортогонально спроектировать на плоскостьZ=0.
8. Задана призма с вершинами А(100,0,0), B(0,100,0), C(100, 100,0), D(100,0,200), Е(0,100,200), F(100,100,200).
Требуется: а) повернуть её вокруг ребра CFна угол1500; б) повернуть вокруг осиX на угол300; в) построить диметрическую проекцию с коэффициентомk=1/3.
9. Задан параллелепипед с вершинами А(0,0,0), B(0,2,0), C(1, 2,0), D(1,0,0), Е(0,0,3), F(0,2,3), G(1,2,3), H(1,0,3).
Требуется: а) масштабно увеличить его с коэффициентами (50, 60, 40); б) сдвинуть на вектор(100,50,200);в) построить ортогональную проекцию на плоскостьZ=0; г) построить
152
- Глава 1. Основные виды геометрических объектов
- §1. Основные аналитические способы задания кривых
- §2. Виды кривых
- §3. Основные способы задания прямых
- §4. Способы задания окружностей и их дуг
- §6. Виды поверхностей
- Пример 2.Уравнение конуса второй степени
- §7. Основные способы задания плоскостей
- §8. Аналитические способы задания пространственных тел
- Глава 2. Интерполяция кривых и поверхностей алгебраическими полиномами
- §1. Основные способы моделирования кривых. Интерполяция и аппроксимация
- §2. Интерполирование кривых с помощью алгебраических полиномов канонического вида
- §3. Интерполирование по однократным узлам. Интерполяционные многочлены Лагранжа и Ньютона
- §4. Интерполирование по двукратным узлам. Интерполяционные многочлены Эрмита
- §5. Интерполирование поверхностей
- 5.1. Интерполирование по однократным узлам. Билинейные поверхности
- 5.2. Интерполирование по двукратным узлам
- Глава 3. Моделирование кривых и поверхностей при помощи сплайнов
- I. Построение локальных сплайнов.
- II. Построение интерполяционных сплайнов.
- §1. Интерполирование кривых и поверхностей с помощью локальных сплайнов
- 1.1 Построение сплайнов по однократным узлам
- 1.2 Интерполирование по двукратным узлам
- §2. Построение интерполяционных сплайнов.
- 2.2. Кубические интерполяционные сплайны
- §3. Интерполяция с помощью в-сплайнов
- Глава 4. Интерполирование поверхностей по линиям
- §1.Интерполирование по кривым (линейчатые или плазовые поверхности)
- §2. Линейные поверхности Кунса
- §3. Обобщенные поверхности Кунса
- Глава 5. Аппроксимация алгебраическими полиномами
- §1. Аппроксимация по методу наименьших квадратов
- §2. Аппроксимация алгебраическими многочленами по критерию наилучшего равномерного приближения
- § 3. Аппроксимация при помощи кривых и поверхностей Безье
- Глава 6. Модели объектов. Плоские и пространственные линейные преобразования
- §1. Модели (структуры данных) графических объектов
- §2. Задание плоских и пространственных линейных преобразований при помощи уравнений связи
- § 3. Однородные координаты. Матричные представления линейных преобразований
- Задачи. Записать прямые и обратные матрицы элемен-тарных преобразований, при помощи которых можно осу-ществить следующие действия:
- § 4. Составные линейные преобразования
- § 5. Линейные преобразования каркасных моделей
- Глава 7.Проективные изображения трехмерных объектов
- §1. Аксонометрические проекции
- 1.1.Ортогональные проекции
- 1.2 Диметрические проекции
- Куб Диметрическая проекция
- 1. 3. Изометрическая проекция
- §2. Перспективные проекции
- §3. Построение проективных векторных изображений трёхмерных объектов
- Глава 8. Графические базы данных (гбд)
- §1. Структура и схема функционирования типовых гбд
- §2. Постановка задачи проектирования гбд в графической системе AutoCad
- Точки привязки
- §3. Разработка структуры гбд
- §4. Пакетные файлы гбд
- §5. Параметрические функции гбд
- §6. Создание библиотек слайдов гбд
- §7. Модификация основного меню AutoCad 2000
- 7.1. Файл меню. Его разделы. Управляющие символы
- 7.2. Модификация всплывающего и падающего меню AutoCad2000
- 7.3. Модификация экранного меню AutoCad2000
- 7.4. Модификация графического меню AutoCad2000
- §8. Использование разработанной базы данных
- Глава 9. Создание реалистических изображений
- § 1. Пространственные модели
- §2. Геометрическое моделирование объектов сложной формы
- § 3. Текстуры
- § 4. Основные операции при построении реалистических изображений
- § 5. Моделирование источников освещения и расчёт освещённости малых участков поверхности объектов
- § 6. Моделирование отражающих свойств поверхностей
- § 7. Моделирование отражения от поверхности (затенение)
- § 8. Удаление невидимых граней. Расчёт теней
- §9. Создание стереоскопического эффекта
- §10. Анимация
- Порядок выполнения и примерные темы курсовых работ
- Литература