
--> 3 TRANSFORMATIONS AFFINES DE CE TRIANGLE
(DEFINE (T1 XY)
(LIST (* 0.5 (CAR XY))
(* 0.5 (CADR XY))))
(DEFINE (T2 XY)
(LIST (+ (* 0.5 (CAR XY)) 1)
(* 0.5 (CADR XY))))
(DEFINE (T3 XY)
(LIST (+ (* 0.5 (CAR XY)) 0.5)
(+ (* 0.5 (CADR XY)) 0.5))
ETC...
|
--> RÉCURSION NON TERMINALE À 3 APPELS RÉCURSIFS !!!
(DEFINE (TRIANGLE A B C N)
(COND ((= N 0) (TRACE-TRIANGLE A B C))
(ELSE
(TRIANGLE (T1 A) (T1 B) (T1 C) (- N 1))
(TRIANGLE (T2 A) (T2 B) (T2 C) (- N 1))
(TRIANGLE (T3 A) (T3 B) (T3 C) (- N 1)))))
(OPEN-GRAPHICS) (DEFINE W (OPEN-VIEWPORT "" 800 400)) (DEFINE (TRACE-TRIANGLE A B C) ((DRAW-PIXEL W) (MAKE-POSN (XECHELLE (CAR A)) (YECHELLE (CADR A))) "red") ((DRAW-PIXEL W) (MAKE-POSN (XECHELLE (CAR B)) (YECHELLE (CADR B))) "red") ((DRAW-PIXEL W) (MAKE-POSN (XECHELLE (CAR C)) (YECHELLE (CADR C))) "red")) (DEFINE (XECHELLE X) (+ (TRUNCATE (* 300 X)) 100)) (DEFINE (YECHELLE Y) (+ (TRUNCATE (* 300 (- Y))) 350))
(DEFINE (DESSINE-TRIANGLE N) ((DRAW-VIEWPORT W)) (TRIANGLE '(0 0) '(2 0) '(1 1) N))