Реклама i
Стань нашим партнером - зарабатывай с нами!
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Ох уж этот LISP

Ох уж этот LISP

Ответ
Поиск в этой теме
Непрочитано 11.10.2004, 07:50 #1
Ох уж этот LISP
 
Сообщений: n/a

ПРивет!
Надеюсь что вы мне поможете.
Мне нужно решить задачу на лиспе и все было бы хорошо,но вот препод в институте походу знает лисп не лучше нас, а требует.

А задача в след. Начертить куб и по всякому над ним издеваться: то поворачивая вокруг оси, то делать различные проекции или масштабировать.

У меня вроде получилось, но я делал по лекциям, т.е брал матрицу поворота и находил новое положение точек куба, перемножая с начальными знач. координат(слишком уж большой текст получается для поворота). Я верю что можно обойтись и без такой писанины.

Помоготe , а?
Просмотров: 2325
 
Непрочитано 11.10.2004, 13:36
#2
Стас


 
Сообщений: n/a


Сделай из куба группу..или блок...и вертай себе наздоровье коммандой _rotate
 
 
Непрочитано 11.10.2004, 17:38
#3
Startrek

AutoCAD/AutoLISP
 
Регистрация: 27.08.2003
Seattle/USA
Сообщений: 1,133


COMMAND: '_3dorbit
Startrek вне форума  
 
Непрочитано 11.10.2004, 19:26
#4
{Smirnoff}

Инженер по системам безопасности
 
Регистрация: 23.11.2003
Рига
Сообщений: 1,099


Короче вот такое решение, на элементарное знание AutoCAD, посколько представляет из себя элементарный "скриптинг":
Код:
[Выделить все]
(defun c:mcube ()
  (setq grn(getreal "Enter facet length: "))
  (command "_.box" "0.0,0.0,0.0" "_c" grn)
  (command "_.3dorbit")
  (princ)
  ); end mcube
Если же требуется знание ЛИСП... То придеться самому напрячься.
{Smirnoff} вне форума  
 
Непрочитано 11.10.2004, 21:05
#5
Maksimus


 
Регистрация: 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 «»)
)) )

Спасибо.
Maksimus вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Ох уж этот LISP

Размещение рекламы