CDE
This commit is contained in:
parent
518da4a923
commit
764da6cbbb
6144 changed files with 83610 additions and 11 deletions
|
|
@ -0,0 +1,29 @@
|
|||
(defun draw-circle (draw-function x0 y0 radius)
|
||||
(labels ((foo (x y)
|
||||
(funcall draw-function x y))
|
||||
(put (x y m)
|
||||
(let ((x+ (+ x0 x))
|
||||
(x- (- x0 x))
|
||||
(y+ (+ y0 y))
|
||||
(y- (- y0 y))
|
||||
(x0y+ (+ x0 y))
|
||||
(x0y- (- x0 y))
|
||||
(xy0+ (+ y0 x))
|
||||
(xy0- (- y0 x)))
|
||||
(foo x+ y+)
|
||||
(foo x+ y-)
|
||||
(foo x- y+)
|
||||
(foo x- y-)
|
||||
(foo x0y+ xy0+)
|
||||
(foo x0y+ xy0-)
|
||||
(foo x0y- xy0+)
|
||||
(foo x0y- xy0-)
|
||||
(multiple-value-bind (y m) (if (plusp m)
|
||||
(values (1- y) (- m (* 8 y)))
|
||||
(values y m))
|
||||
(when (<= x y)
|
||||
(put (1+ x)
|
||||
y
|
||||
(+ m 4 (* 8 x))))))))
|
||||
(put 0 radius (- 5 (* 4 radius)))
|
||||
(values)))
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
CL-USER> (let ((buffer (make-array '(30 30)
|
||||
:element-type 'bit)))
|
||||
(draw-circle (lambda (x y)
|
||||
(setf (bit buffer x y) 1)) 15 15 10)
|
||||
buffer)
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
import bitmap: Image, RGB;
|
||||
|
||||
void circle(Color)(Image!Color img, in int x0, in int y0,
|
||||
in int radius, in Color color) pure nothrow {
|
||||
int f = 1 - radius;
|
||||
int ddfX = 1;
|
||||
int ddfY = -2 * radius;
|
||||
int x = 0;
|
||||
int y = radius;
|
||||
img[x0, y0 + radius] = color;
|
||||
img[x0, y0 - radius] = color;
|
||||
img[x0 + radius, y0] = color;
|
||||
img[x0 - radius, y0] = color;
|
||||
|
||||
while (x < y) {
|
||||
if (f >= 0) {
|
||||
y--;
|
||||
ddfY += 2;
|
||||
f += ddfY;
|
||||
}
|
||||
x++;
|
||||
ddfX += 2;
|
||||
f += ddfX;
|
||||
img[x0 + x, y0 + y] = color;
|
||||
img[x0 - x, y0 + y] = color;
|
||||
img[x0 + x, y0 - y] = color;
|
||||
img[x0 - x, y0 - y] = color;
|
||||
img[x0 + y, y0 + x] = color;
|
||||
img[x0 - y, y0 + x] = color;
|
||||
img[x0 + y, y0 - x] = color;
|
||||
img[x0 - y, y0 - x] = color;
|
||||
}
|
||||
}
|
||||
|
||||
void main() {
|
||||
auto img = new Image!RGB(25, 25);
|
||||
img.clear(RGB.white);
|
||||
circle(img, 12, 12, 12, RGB.black);
|
||||
img.textualShow();
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue