2013-03-18 11 views
5

Orta nokta daire algoritmasına benzer bir orta nokta elips çizme algoritması var mı?Orta nokta elips algoritması var mı?

Örnekler için google'da arama yaptım, ancak çalışmadığım ya da doldurulmamış elipsler için herhangi bir dosyayı buldum. Ayrıca, orta nokta daire algoritmasındaki wikipedia sayfası, elips sürümünün varlığına işaret eder, ancak google'ın çözüme yardımcı olamadığı anlaşılan bir bağlantıya sahiptir.

Her türlü yardım minnetle takdir edilecektir.

cevap

5

Sonunda burada bir cevap buldu: ...

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

çoğaltılamaz ve daha uygulanabilir bir altında olması tweaked

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); 
    } 
} 
İlgili konular