miércoles, 4 de enero de 2012

Ejercicio Espiral en LISP
1. Descripción

Defina una función que genere un espiral, ingresando como datos de inicio el diámetro, las coordenadas (x, y), y el número de vueltas que realizará la espiral.
2. Solución
(defun espiral (d c v) definimos la función espiral con los datos requeridos
(setq x (car c)) Obtenemos la primera coordenada x
(setq y (cadr c)) Obtenemos la segunda coordenada y
(setq p 2)inicializamos la variable p=2 para incrementar el radio en x
(setq i 1) inicializamos la variable i=1 para incrementar el radio en y
(setq r (/ d 2)) obtenemos el valor de radio
(setq a (- x r)) se usa como centro para los arcos superiores
(setq b y) se usa com centro para los arcos inferiores
(dibuja v) se llama a la función para graficar
)
(defun dibuja (v)
(command "_arc" (list (- a (* i r)) b) (list a (+ b (* i r))) (list (+ a (* i r)) b)) se agregan los puntos a ser graficados
(command "_arc" (list (- x (* p r)) y) (list x (- y (* p r))) (list (+ x (* p r)) y)) se agregan los puntos a ser graficados
(setq i (+ i 2)) incrementamos valores los radios superiores
(setq p (+ p 2))incrementamos valores los radios inferiores
(setq v (- v 1))
(if (> v 0) (dibuja v)) se llama a lafunción recursivamente hasta que deje de cumplir la misma.
)
3. Ejecución

No hay comentarios:

Publicar un comentario