Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
M_П_Л_С205_234.doc
Скачиваний:
2
Добавлен:
24.04.2019
Размер:
230.91 Кб
Скачать

I.Функции, строящие матрицы элементарных линейных преобразований

1. Построение матрицы сдвига на вектор (a,b,c,)

(defun SD (a b c); ф-ция построения матрицы сдвига на

; вектор (a,b,c), результат – в списке MSD

(setq l1( list 1 0 0 a) l2( list 0 1 0 b) l3( list 0 0 1 c) l4( list 0 0 0 1) MSD ( list l1 l2 l3 l4)) )

2. Построение матрицы отражения

(defun MR (a b c); ф-ция построения матрицы отражения.

; Изменения знаков координат по оcям указываются при

; помощи (-1), сохранение (+1), результат – в списке MMR

(setq l1( list a 0 0 0) l2( list 0 b 0 0) l3( list 0 0 c 0) l4( list 0 0 0 1) MMR ( list l1 l2 l3 l4)) )

3. Построение матрицы изменения масштаба по осям с коэффициентами (a,b,c,)

(defun SC (a b c); ф-ция построения матрицы изменения

; масштаба по осям с коэффициентами (a,b,c), результат – в

; списке MSC

(setq l1( list a 0 0 0) l2( list b 0 0) l3( list 0 0 c 0) l4( list 0 0 0 1) MSC ( list l1 l2 l3 l4)) )

4. Построение матрицы поворота вокруг оси х на угол a

(defun RX (a); ф-ция построения матрицы пов-та вокруг оси

; х на угол a, рез-т – в списке MRX

(setq l1( list 1 0 0 0) l2( list 0 (cos a) (- 0 (sin a)) 0) l3 ( list 0 (sin a) (cos a) 0) l4( list 0 0 0 1) MRX ( list l1 l2 l3 l4)) )

5. Построение матрицы поворота вокруг оси y на угол b

(defun RY (b); ф-ция построения матрицы пов-та вокруг оси

220

; у на угол b, рез-т – в списке MRY

(setq l1( list (cos b) 0 (sin b) 0) l2 ( list 0 1 0 0) l3 ( list (- (sin b)) 0 (cos b) 0) l4( list 0 0 0 1) MRY ( list l1 l2 l3 l4)) )

6. Построение матрицы поворота вокруг оси z на угол c

(defun RZ (c); ф-ция построения матрицы пов-та вокруг оси

; z на угол c, рез-т – в списке MRZ

(setq l1( list (cos c) (- 0 (sin c)) 0 0) l2( list (sin c) (cos c) 0 0) l3 ( list 0 0 1 0) l4( list 0 0 0 1)

MRZ ( list l1 l2 l3 l4)) )

7

I.Функция, строящая матрицу диметрического проективного преобразования

(defun DIMMETR (k); ф-ция построения матрицы

; диметрического проективного преобразования с коэффи-

; циентом k, результат – в списке mdim

; 1. вычисление вспомогательных углов поворота (ksi,fi)

; вокруг осей х,у

(setq cksi (sqrt (/ 2 (+ 2 (* k k)))) tksi (/ (sqrt (- 1 (* cksi cksi))) cksi) ksi (atan tksi))

(setq c2fi (- 1 (* k k)) cfi (sqrt (* 0.5 (+ 1 c2fi))) tfi (/ (sqrt (- 1 (* cfi cfi))) cfi) cfi) fi (atan tfi))

; формирования матриц поворота вокруг осей х,у и

; ортогональной проекции на пл-сть z=0

(rx fi) (ry ksi) (orz 0)

; умножение матриц элементарных преобразований и

; формирование итоговой матрицы

(mm mry mrx) (mm morz mrez) (setq mdim mrez) )

II.Функция, строящая перспективную проекцию пространственого объекта

(defun Persp (spp n spl m p q r); ф-ция постpоения тpехточеч-

221

; ной пеpспективной пpоекции spp-список длины n одно-

; pодных кооpдинат вершин объекта

; spl-список длины m паp номеpов точек в pебpах

; p,q,r-коэфициенты пеpспективных пpеобpазований по осям ; x,y,z

; Pасчет пеpспективных одноpодных кооpдинат точек

; (массив spp n)

(setq i 0 spo nil ) (repeat n (progn

(setq pt (nth i spp) x (nth 0 pt) y (nth 1 pt) z (nth 2 pt) d (+ (* x p) (* y q) (* z r) 1)

po (list (/ x d) (/ y d) (/ z d) 1) spo (cons po spo) i (+ i 1) )

) ) (setq sppn (reverse spo))

;Вычерчивание линий (пары из номеров точек - из массива spl,

;новые координаты точек - из массива sppn)

(setq i m) (repeat m (progn (setq i (- i 1) nomp (nth i spl) )

;Извлечение полных однородных координат точек (x,y,z,1) линий (р1,р2)

;Формирование 2-мерных координат точек (х,у) (pt1,pt2)

(setq p1 (nth (nth 0 nomp) sppn) pt1 (list (nth 0 p1) (nth 1 p1)) p2 (nth (nth 1 nomp) sppn) pt2

(list (nth 0 p2) (nth 1 p2)) )

;Вычерчивание рёбер объекта

(command "LINE" pt1 pt2 "")

))

)

8

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