Bonsoir,
Petite variation du code de (gile) pour le plaisir de montrer la souplesse du langage, donc si on ne voulait pas passer par le calcul en coordonnée polaire, et préférer passer par le calcule des coordonnées cartésiennes.
La variante suivante travaille directement sur les d'opérateurs mathématiques, les arguments fx et fy stockent les opérandes de déplacement (+ -), dans le même esprit que la proposition de BonusCAD, ceci en remplacement des coefficients directeurs +1 ou -1 utilisé dans le code d'origine.
(defun fibSpiral (p i / loop b)
(setq b (- (sqrt 2.) 1.))
(defun loop (i px py n m fx fy)
(vl-list* (list 10 px py)
(cons 42 b)
(if (< 0 i)
(loop (1- i) (fx px m) (fy py m) m (+ n m) (if (= fy -) + -) fx)
)
)
)
(entmakex
(append
(list
(cons 0 "LWPOLYLINE")
(cons 100 "AcDbEntity")
(cons 100 "AcDbPolyline")
(cons 90 (+ i 1))
)
(loop i (car p) (cadr p) 0 1 - +)
)
)
)