Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Помогите, пожалуйста, с Лисп чуть-чуть :) / 3 сообщений из 3, страница 1 из 1
14.11.2010, 11:19
    #36955215
vazovod
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, пожалуйста, с Лисп чуть-чуть :)
Программку рисования фрактала Дракон Хартера — Хейтуэя надо на лиспе
Вот попытался:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
(DEFUN PAINT(X1 Y1 X2 Y2 K)
  (SETQ A(LIST X1 Y1))
  (SETQ B(LIST X2 Y2))
  ;(COMMAND "ОТРЕЗОК"A B)
   (IF (= k  0 )
    (PROGN
           (COMMAND "ОТРЕЗОК"A B) 
    exit
   )
     )  
  ; (DRAGON)
   
  (SETQ S1 (+ X1 X2))
   (SETQ S2 (- Y2 Y1))
    
   (SETQ S11 (/ S1  2 ))
   (SETQ S22 (/ S2  2 ))
   (SETQ TX (+ S11 S22))

  (SETQ Z1 (+ Y1 Y2))
  (SETQ Z2 (- X2 X1))
    
  (SETQ Z11 (/ Z1  2 ))
  (SETQ Z22 (/ Z2  2 ))
  (SETQ TY (- Z11 Z22)) 
  (SETQ KK(- K  1 ))
  

  (PAINT X2 Y2 TX TY KK)
  (PAINT X1 Y1 TX TY KK)
  
)
(DEFUN DRAGON()
 ;(setq X1  30  X2  30  Y1  30  Y2  300  K  0 )
;(Paint X1 Y1 X2 Y2 K)
 (PAINT  100   150   500   150   8 )
)

А вот на Delphi в инете нашёл.
Косяк весь с рекурсией, вот exit там есть, в лиспе не сделал, помогите пожалуйста

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
procedure Dragon(x1,y1,x2,y2,Depth:Longint;canv:TCanvas);
  procedure Paint(x1,y1,x2,y2,k:Longint);
  var tx,ty:Longint;
  begin
   if k= 0  then
    begin
     canv.MoveTo(x1,y1);
     canv.LineTo(x2,y2);
     Exit;                      <===================== !!!
    end;
   tx:=(x1+x2) div  2 +(y2-y1) div  2 ;
   ty:=(y1+y2) div  2 -(x2-x1) div  2 ;
   Paint(x2,y2,tx,ty,k- 1 );
   Paint(x1,y1,tx,ty,k- 1 );
  end;
begin
 Paint(x1,y1,x2,y2,Depth);
end;
...
Рейтинг: 0 / 0
14.11.2010, 12:39
    #36955299
vazovod
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, пожалуйста, с Лисп чуть-чуть :)
Что тут не хватает? а?
:)
...
Рейтинг: 0 / 0
14.11.2010, 15:45
    #36955461
vazovod
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, пожалуйста, с Лисп чуть-чуть :)
Вот так ещё сделал, пишет всегда функция отменена
Помогите пожалуйста, очень срочно :)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
(DEFUN PAINT(X1 Y1 X2 Y2 K)
  (SETQ A(LIST X1 Y1))
  (SETQ B(LIST X2 Y2))
 
    (IF (> k  0 )
      (PROGN  
             
            (SETQ S1 (+ X1 X2))
            (SETQ S2 (- Y2 Y1))
            (SETQ S11 (/ S1  2 ))
            (SETQ S22 (/ S2  2 ))
            (SETQ TX (+ S11 S22))
            (SETQ Z1 (+ Y1 Y2))
            (SETQ Z2 (- X2 X1))
            (SETQ Z11 (/ Z1  2 ))
            (SETQ Z22 (/ Z2  2 ))
            (SETQ TY (- Z11 Z22)) 
            (SETQ KK(- K  1 ))
  

            (PAINT X2 Y2 TX TY KK)
            (PAINT X1 Y1 TX TY KK)
       )
       
       (COMMAND "ОТРЕЗОК"A B) 
 
    
   )  

)
(DEFUN DRAGON()
 (PAINT  100   150   500   150   8 )
)
 
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Помогите, пожалуйста, с Лисп чуть-чуть :) / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]