Фрактал КОХА на AutoLISP, подскажите в чем ошибка
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Фрактал КОХА на AutoLISP, подскажите в чем ошибка

Фрактал КОХА на AutoLISP, подскажите в чем ошибка

Ответ
Поиск в этой теме
Непрочитано 24.11.2011, 02:47 #1
Фрактал КОХА на AutoLISP, подскажите в чем ошибка
777Lich777
 
Регистрация: 24.11.2011
Сообщений: 1

КОД:

Код:
[Выделить все]
 (defun koh(x0 x1 y0 y1 level) 
(if (= level 1) 
((setq p1 (list x0 y0)) 
(setq p2 (list x1 y1)) 
(command "_line" p1 p2 "")) 
) 

(setq L (sqrt (+ (* (- x1 x0) (- x1 x0)) (* (- y1 y0) (- y1 y0))))) 
(setq h (/ L (* 2 (sqrt 3)))) 
(setq sina (/ (- y1 y0) L)) 
(setq cosa (/ (- x1 x0) L)) 
(setq xx1 (+ x0 (/ (- x1 x0) 3))) 
(setq xx2 (+ (/ (+ x0 x1) 2)(* h sina))) 
(setq xx3 (+ x0 (/ (* (- x1 x0) 2) 3))) 
(setq yy1 (+ y0 (/ (- y1 y0) 3))) 
(setq yy2 (+ (/ (+ y0 y1) 2)(* h cosa))) 
(setq yy3 (+ y0 (/ (* (- y1 y0) 2) 3))) 


(koh x0 xx1 y0 yy1 (- level 1)) 
(koh xx1 xx2 yy1 yy2 (- level 1)) 
(koh xx2 xx3 yy2 yy3 (- level 1)) 
(koh xx3 x1 yy3 y1 (- level 1)) 
) 
вызываю из командной строки автокада (koh 0 300 0 100 4)
Должен рисоваться фрактал коха, но рисуется одна линия и все. Думаю что в автолиспе рекурсия как-то по другому вызывается, но в интернете толкового ни чего не нашел.
Просмотров: 2114
 
Непрочитано 24.11.2011, 09:36
#2
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404


Не вникая в код - привязки сняты?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 24.11.2011, 10:05
#3
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


+ строка 3-5 ошибка там скорее всего (progn...) подразумевался + переменные не локализированны+ последовательные setq пишутся в одной функции + они здесь вобще не нужны (последние утверждение обычно вызывает много споров, но по предыдущим - без вариантов).
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 24.11.2011, 10:08
#4
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Думаю, что Алексей прав.
777Lich777,
Попробуй (command "_line" p1 p2 "")) заменить на
Код:
[Выделить все]
 (command "_line" "_none" p1 "_none" p2 ""))
Цитата:
Сообщение от 777Lich777 Посмотреть сообщение
но в интернете толкового ни чего не нашел.
Здесь почитай
Фракталы:
Fractals



Draw Fractal tree and SpiroGraph flower




__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 24.11.2011, 10:13
#5
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404


По-быстрому:
Код:
[Выделить все]
 (defun koh (start end level / tmp d a)
  (cond
    ((= level 1)
     (entmakex (list (cons 0 "LINE") (cons 10 start) (cons 11 end)))
     )
    (t
     (foreach item (list
                     (list start
                           (setq tmp (polar start (setq a (angle start end)) (setq d (/ (distance start end) 3.))))
                           ) ;_ end of list
                     (list tmp (setq tmp (polar tmp (+ a (/ pi 3.)) d)))
                     (list tmp (setq tmp (polar tmp (- a (/ pi 3.)) d)))
                     (list tmp end)
                     ) ;_ end of list
       (koh (car item) (cadr item) (1- level))
       ) ;_ end of foreach
     )
    ) ;_ end of cond
  (princ)
  ) ;_ end of defun
---
Добавлено: вызов
Код:
[Выделить все]
 (koh (getpoint "\nStart : ")(getpoint "\nEnd : ") 5)
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.

Последний раз редактировалось Кулик Алексей aka kpblc, 24.11.2011 в 10:19.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Фрактал КОХА на AutoLISP, подскажите в чем ошибка



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Юмор 2007 Огурец Разное 1172 29.12.2007 11:16
Не могу понять в чем ошибка... DY Программирование 5 21.02.2007 17:35
БРЕД СИВОЙ КОБЫЛЫ Kryaker Разное 1876 29.12.2006 23:41
Ошибка "Е058" в СКАДе!!! Подскажите. Aleksey_Br SCAD 4 28.11.2006 16:55
в чем ошибка? .open KIT Программирование 3 06.12.2004 23:15