2013-03-18 17 views
5

Czy istnieje algorytm wyznaczania punktu środkowego elipsy podobny do algorytmu z punktem środkowym?Czy istnieje algorytm elipsy punktu środkowego?

Szukałem w Google dla przykładów, ale jakikolwiek znalazłem albo nie działają lub są dla wypełnionych elips, nie wykreślono. Również strona wikipedii na algorytmie koła punktu środkowego odnosi się do istnienia wersji elipsy, ale ma martwy link, którego Google wydaje się niezdolny do rozwiązania.

Każda pomoc zostanie wdzięcznie doceniona.

Odpowiedz

5

końcu znalazłem odpowiedź tutaj:

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

powielana i manipulowane, aby być bardziej powszechnie stosowane poniżej ...

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); 
    } 
} 
Powiązane problemy