Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
М_Г7_132_154.doc
Скачиваний:
5
Добавлен:
24.04.2019
Размер:
218.11 Кб
Скачать

7.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 .

148

Замечание. Порядок матриц в произведении – обратный по-рядку выполнения преобразований. Это обусловлено при-нятой последовательностью умножения матриц на вектор – слева.

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.

Решение.

Ниже дан текст соответствующей функции kub на языке Autolisp.

149

Алгоритм её работы следующий:

1. Строится список spp координат точек куба A, B, C, D, E, F, G, H.

2. Строится список пар номеров spl = ( l0, l1,…, l11) пар вер-шин, образующих линии-рёбра куба.

3. С помощью стандартных функций rx, ry, rz, s, orz строятся матрицы элементарных преобразований mrx, mry, mrz, ms ,morz , осуществляющих преобразования 1) -5).

С помощью функции векторной алгебры умножения матриц mm определяется итоговая матрица преобразования mrez.

  1. С помощью функции векторной алгебры умножения матрицы на вектор mv определяются новые координаты точек (список sppn).

6. По списку линий spl и списку sppn координат строятся:

a) двухмерные проективные координаты проекций вершин куба (xi,yi);

б) векторы – линии требуемой проекции модели.

Текст функции kub

(defun c: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.) (orz 0)

150

;Расчет итоговой матрицы сложного преобразования (mrеz)

(mm mry mrx 4) (mm mrz mrez 4) (mm ms mrez 4) (mm morz mrez 4)

;Пересчет координат точек (из массива spp в массив sppn)

(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. По заданному типу геометрического объекта и набору его вершин:

а) построить каркасную модель (при помощи списков однородных координат вершин и пар номеров вершин, отражающих все рёбра);

б) построить матрицы всех элементарных преобразований и итоговую мастрицу сложного преобразования;

в) найти проективные координаты вершин объекта и построить его заданную проекцию.

151

Рис.7.5

1. Задана пирамида с вершинами А(300,100,0), B(200,100,0), C(200,200,0), D(300,200,0), Е(250,150,200).

Требуется: а) повернуть её вокруг ребра AD на угол 600; б) сдвинуть на вектор (-200,100,200); в) построить изомет-рическую проекцию.

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.

152

4. Задана пирамида с вершинами А(60,60,100), B(60, 120,120), C(100,90,140), D(80,80,200).

Требуется: а) повернуть её вокруг оси, проходящей через точки Е=(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. Задана пирамида с вершинами А(100,200,100), B(200, 200, 100), C(200,100,100), D(200,200,400).

Требуется: повернуть её на угол 1500 вокруг ребра ВD и построить изометрическую проекцию.

7. Задана призма с вершинами А(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).

8. Задана призма с вершинами А(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.

9. Задана призма с вершинами А(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; в) построить диметри-

153

ческую проекцию с коэффициентом k=1/3.

10. Задан параллелепипед с вершинами А(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; г) построить косую перспективу с точками схода (100,0,0), (0,200,0), (0,0,300).

11. Задан параллелепипед с вершинами А(10,10,0), B(110, 10, 0), C(110,60,0), D(10,60,0), Е(10,10,100), F(110,10,100), G(110, 60,100), H(10,60,100).

Требуется: а) повернуть его вокруг ребра DH на угол 1600; б) сдвинуть на вектор (50, 50, 50), в) изометрически спроек-тировать.

12. Задана призма с основанием в виде правильного шести-угольника ABCDEF с центром O в точке (200,200,100) и длиной стороны, равной 50. Стороны AB, DЕ параллельны оси х. Высота призмы равна 400.

Требуется: а) построить ортогональную проекцию на плос-кость 0ху, б) построить угловую перспективу с точками схо-да (500,0,0) и (0,600,0).

13. Задана призма с основанием в виде пятиугольника, образованного точками А(0,0,0), B(200,0,0), C(200, 100, 0), D(100,200,0), Е(0,200,0). Высота призмы равна 200.

Требуется: построить угловую перспективу с точками схо-да (600,0,0) и (0,800,0).

II. Объект задан вершинами А(50,50,0), B(250,150,0), C(150, 50, 0), D(100,100,100), Е(200,120,150) и рёбрами AB, BC, AC, AD, DC, DE, CE, BE, DB.

Требуется: а) повернуть его вокруг ребра AС на угол 600; б) сдвинуть на вектор (100,400,100); в) построить изомет-рическую проекцию.

154

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]