Возможен ли расчёт гипара средствами lisp?
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Возможен ли расчёт гипара средствами lisp?

Возможен ли расчёт гипара средствами lisp?

Ответ
Поиск в этой теме
Непрочитано 07.02.2011, 23:23 #1
Возможен ли расчёт гипара средствами lisp?
Михаил Левашов
 
художник-оформитель
 
Москва
Регистрация: 07.04.2007
Сообщений: 63

Послал мне Бог ученицу из одного строительного института, которую я обучаю азам черчения в AutoCAD'е. Ну, учу, насколько сам разумею программу. Во время оно смог озадачить Елпанова и Новицкого (Огурца) некоторыми проблемами, которые оказались настолько глубокими (или нагло-неискушёнными, что суть одно и то же), что вышеупомянутые гении (без иронии пишу) согласились со мной поговорить. Именно это и даёт мне, как полагаю, право учить азам...
И вот, ученица меня спрашивает: а как мне в AutoCAD'е выстроить гипар? Конечно, я спрашиваю, а что это такое. Ученица пишет мне формулы! Да, говорю я ей, вот CorelDRAW всё что угодно описывает одной формулой, а как здесь быть, я не знаю.
Итак, суть вопроса: в начертательной геометрии есть не совсем простые, но понятные правила, как вычертить гиперболический параболоид. Неужели нет лиспа для этого построения? Поиском по всему Гуглу я пользовался, но ответа не нашёл.
Просмотров: 2020
 
Непрочитано 07.02.2011, 23:52
#2
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,413
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от Михаил Левашов Посмотреть сообщение
Неужели нет лиспа для этого построения?
Формулу в студию. Средствами lisp построить аппроксимацию любой кривой не проблема. Насколько она будет гладкой зависит от шага аппроксимации. Для каких-то кривых можно использовать и сплайны.
Александр Ривилис вне форума  
 
Автор темы   Непрочитано 08.02.2011, 00:03
#3
Михаил Левашов

художник-оформитель
 
Регистрация: 07.04.2007
Москва
Сообщений: 63


Дико извиняюсь. Правда состоит в том, что формулу-то мне ученица написала (видать, разумеет их), но я, увидев её, сразу сказал, что это точно не кривая Безье (то есть основа Corel, Illustrator'а и т. п.) Ну, в общем, в Википедии нашёл я такую формулу - вроде, та же, что мне, неразумному, нарисовали.

2z = x2/a2 - y2/b2 (в правой части уравнения двойки - обозначения квадрата; не знаю, как средствами данного форума изобразить верхний режим текста)

Кстати: чем тема интересна. Речь не идёт о том, чтобы данная студентка выполнила данную курсовую. Дело в другом: институт такой-то требует чертежи, но чертёжные программы там не преподают - оставляют их выбор на усмотрение обучающегося. Студентка разумно решает, что нет ничего лучше AutoCAD'а. Конечно, я соглашаюсь с ней. Но вычерчивать-то придётся сложные поверхности, рассчитываемые тем или иным образом... нет, ученица не бросит учить AutoCAD, если данный гипар придётся рассчитывать по шагам, но я был крайне удивлён, когда не нашёл лиспа для столь простой формулы. Или не всё так просто?

Последний раз редактировалось Михаил Левашов, 08.02.2011 в 00:14.
Михаил Левашов вне форума  
 
Непрочитано 08.02.2011, 13:10
#4
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


интересная задачка, я ее решил очень много лет назад - вдохновленный интересным сайтом:
http://autolisp.mapcar.net/lambda.html
вот мое решение, пример сделал по нужным здесь формулам, но программа может строить поверхность вообще по любым формулам - ограничение только в одной стороне, те. шар не построить, только одну сторону...
Код:
[Выделить все]
 (vl-load-com)
(defun formula-Body (f m n / l)
;; by ElpanovEvgeniy
 ;;
 ;; аргументы:
 ;; F - формула поверхности
 ;; M - размер по x (программа строит в диапазоне +/- M)
 ;; N - размер по Y (программа строит в диапазоне +/- N)
 ;; максимальный допустимый диапазон размеров 2 - 127
 ;;
 ;; пример запуска для построения Гиперболического параболоида:
 ;; (formula-Body (lambda (x y /) (- (* x x 0.05) (* y y 0.05))) 20 20)
 ;;
 ;; пример запуска для построения Эллиптического параболоида:
 ;; (formula-Body (lambda (x y /) (+ (* x x 0.05) (* y y 0.05))) 20 20)
 (setq x (* m -1.)
       y (* n -1.)
 )
 (repeat (1+ (* m 2))
  (setq y (* n -1.))
  (repeat (1+ (* n 2))
   (setq l (cons x (cons y (cons (f x y) l)))
         y (1+ y)
   )
  )
  (setq x (1+ x))
 )
 (vla-add3DMesh
  (vla-get-ModelSpace (vla-get-ActiveDocument (vlax-get-acad-object)))
  (1+ (* m 2))
  (1+ (* n 2))
  (vlax-make-variant
   (vlax-safearray-fill
    (vlax-make-safearray vlax-vbDouble (cons 0 (1- (* (1+ (* m 2)) (1+ (* n 2)) 3))))
    l
   )
  )
 )
 (princ)
)
пример использования:
Код:
[Выделить все]
 (defun c:test ()
 (formula-Body (lambda (x y /) (- (* x x 0.05) (* y y 0.05))) 20 20)
 )
__________________
Чем гениальнее ваш план, тем меньше людей с ним будут согласны.
/Сунь Цзы/
Елпанов Евгений вне форума  
 
Автор темы   Непрочитано 08.02.2011, 14:44
#5
Михаил Левашов

художник-оформитель
 
Регистрация: 07.04.2007
Москва
Сообщений: 63


И что бы мы делали без Евгения Елпанова? Мучались бы, не могли бы ничего построить... я не нахожу слов для выражения благодарности!
Михаил Левашов вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Возможен ли расчёт гипара средствами lisp?



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
{Конкурс} Lisp. Задачки для студентов gomer LISP 10 05.01.2011 16:33
Возможен ли в SCAD правильный расчёт каркаса совместно с фундаментом Mike1 SCAD 9 15.07.2010 14:40
Как средствами LISP узнать, сколько чертежей открыто в AutoCAD? Nike LISP 5 22.06.2010 12:28
загрузка DOS прог через LISP Gaa LISP 15 12.08.2005 19:19