(define (Circle x0 y0 r)
(let ((x 0) (y r) (dp (- 1 r)))
(CircleGo dp x0 x y0 y)))
(define (CircleGo dp x0 x y0 y)
(let ((x1 (+ x 1))(y1 (- y 1)))
(let ( (dp1 (+ (* 2 x1) 3)) (dp2 (+ (- (* 2 x1) (* 2 y1)) 5)))
(if (<= x y)
(if (< dp 0)
(append (list (+ x0 x)(+ y0 y)
(- x0 x) (+ y0 y)
(+ x0 x) (- y0 y)
(- x0 x) (- y0 y)
(+ x0 y) (+ y0 x)
(- x0 y) (+ y0 x)
(+ x0 y) (- y0 x)
(- x0 y) (- y0 x))
(CircleGo dp1 x0 x1 y0 y))
(append (list (+ x0 x) (+ y0 y)
(- x0 x) (+ y0 y)
(+ x0 x) (- y0 y)
(- x0 x) (- y0 y)
(+ x0 y) (+ y0 x)
(- x0 y) (+ y0 x)
(+ x0 y) (- y0 x)
(- x0 y) (- y0 x))
(CircleGo dp2 x0 x1 y0 y1)))
(list )))))
答案 0 :(得分:0)
我认为这个问题与数学有很大关系,而不是编程。听起来你需要一个接受弧度的中心,半径和角度的函数,并返回指定点的x和y坐标。 Sine和Cosine是你的朋友。具体而言,(x0 + r * Cos(theta), y0 + r * Sin(theta))
。