| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
11.10.2004, 07:50 | #1 | |
Ох уж этот LISP
Сообщений: n/a
|
||
Просмотров: 2326
|
|
||||
Регистрация: 11.10.2004
Сообщений: 1
|
Спасибо вам конечно но....
Дело в том, что мне нужно поворачивать и прочее так сказать вручную. с помощью матриц преобразования. Вот листинг который предлагает нам препод по Маш.графу но my mrez и т.д не фурычат. .. Требуется последовательно выполнить следующие элемен-тарные преобразования каркасной модели объекта: 1) поворот вокруг оси Х на угол 300; 2) поворот вокруг оси Y на угол 600; 3) поворот вокруг оси Z на угол 450; 4) сдвиг на вектор (200, 100 , 50); 5) ортогональную проекцию на плоскость z = 0. (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 100 0 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)) (rz (/ pi 4)) (s 200. 100.50.) (orz 0) ;Расчет итоговой матрицы сложного преобразования (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 «») )) ) Спасибо. |
|||