refer tohttp://helloktk.tistory.com/entry/Circle-Drawing-Algorithm

원을 그리기 위해 원의 방정식을 이용하면 된다.
반지름이 r인 원은 
x^2 + y^2 = r^2
x를 종속변수로 하면,
y=sqrt(r^2-x^2)
점을 찍어 그릴 수 있다. 하지만 x가 r에 근접할 수 록 y값이 급격하게 변화하여 연속적인 점을 찍을 수 없게 된다. 그러면 비교적 완만한 연속성이 나오는 x=0 에서 x=y 구간인 45~90도부분을 그려서 위치만 바꿔서 복제하면 해결할 수 있다.

다음은, 정수연산을 위해 x값의 변화에 따라 y값을 어디에 놓을지 정해보자.
x 값이 1일 증가할 때, y값은 0~1사이 감소하게 된다. 따라서 y 와 y-1 의  가운데 점(x+1, y+1/2)이 원의 내부에 있는지 외부에 있는지 판단하여 y값을 정해주면 된다.
다시말해,
(x,y) 에서 x 값이 1 증가하면 -> (x+1,y) 이거나 (x+1,y-1)에 점을 찍는데, 이 판단은 두 점의 중앙점 (x+1, y+1/2)이 r보다 크냐 작냐를 보면 된다.

d = x^2 + y^2 - r^2

x를 1 증가하여 (x+1,y)를 선택할때, 그 다음 점의 d 값은
d_old = (x+1)^2 + (y-1/2)^2 - r^2;
d_new = (x+2)^2 + (y-1/2)^2 -r^2 
          = d_old + 2*(x+1) + 1;

x를 1 증가하여 (x+1,y-1)를 선택할때, 그 다음 점의 d 값은
d_old = (x+1)^2 + (y-1/2)^2-r^2;
d_new = (x+2)^2 + (y-3/2)^2-r^2 
          = d_old + 2*((x+1)-(y-1)) + 1;

그런데, 0 일때, 
d = (5-4*r)/4;
 
이므로 x=0 부터 x = y 까지 정수연산만으로 d값을 업데이트하여 판단할 수 있게 된다.

as3 로 풀어보면,