2013-03-18 3 views
5

중간 점 원 알고리즘과 비슷한 중간 점 타원 작의 알고리즘이 있습니까?중간 타원 알고리즘이 있습니까?

Google에서 예제를 검색했지만 찾지 못했던 것은 작동하지 않거나 채워진 타원에 대한 것으로 플롯되지 않았습니다. 또한 중도 원 알고리즘의 위키 피 디아 페이지는 타원형 버전의 존재를 의미하지만 Google이 해결할 수없는 죽은 링크가 있습니다.

도움이 되었으면 감사하겠습니다.

답변

5

는 결국 여기에 해답을 발견 : ...

http://geofhagopian.net/sablog/Slog-october/slog-10-25-05.htm

재생을보다 일반적으로 적용 아래로 불통

function ellipsePlotPoints (xc,yc, x, y) 
{ 
    setPixel (xc + x, yc + y); 
    setPixel (xc - x, yc + y); 
    setPixel (xc + x, yc - y); 
    setPixel (xc - x, yc - y); 
} 

function ellipse(xc,yc, a, b) 
{ 
    var a2 = a * a; 
    var b2 = b * b; 
    var twoa2 = 2 * a2; 
    var twob2 = 2 * b2; 
    var p; 
    var x = 0; 
    var y = b; 
    var px = 0; 
    var py = twoa2 * y; 

    /* Plot the initial point in each quadrant. */ 
    ellipsePlotPoints (xc,yc, x, y); 

    /* Region 1 */ 
    p = Math.round (b2 - (a2 * b) + (0.25 * a2)); 
    while (px < py) { 
     x++; 
     px += twob2; 
     if (p < 0) 
     p += b2 + px; 
     else { 
     y--; 
     py -= twoa2; 
     p += b2 + px - py; 
     } 
     ellipsePlotPoints (xc,yc, x, y); 
    } 

    /* Region 2 */ 
    p = Math.round (b2 * (x+0.5) * (x+0.5) + a2 * (y-1) * (y-1) - a2 * b2); 
    while (y > 0) { 
     y--; 
     py -= twoa2; 
     if (p > 0) 
     p += a2 - py; 
     else { 
     x++; 
     px += twob2; 
     p += a2 - py + px; 
     } 
     ellipsePlotPoints (xc,yc, x, y); 
    } 
} 
관련 문제