0
私は最近、円を描くスキームで中点円アルゴリズムを使用しましたが、半径が大きくなると小さな円を描くことができます。半径が大きくなると、それは八角形になります。誰か私のコードを修正する方法を教えてもらえますか?体系図の描画円
(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)))))