中点円アルゴリズムに似た中点楕円プロットアルゴリズムはありますか?
私はグーグルで例を検索しましたが、私が見つけたものは機能しないか、塗りつぶされた楕円であり、プロットされていません。また、中点円アルゴリズムのウィキペディアのページは、楕円バージョンの存在について言及していますが、グーグルが解決するのを助けることができないように思われるデッドリンクがあります。
どんな助けでもありがたいです。
中点円アルゴリズムに似た中点楕円プロットアルゴリズムはありますか?
私はグーグルで例を検索しましたが、私が見つけたものは機能しないか、塗りつぶされた楕円であり、プロットされていません。また、中点円アルゴリズムのウィキペディアのページは、楕円バージョンの存在について言及していますが、グーグルが解決するのを助けることができないように思われるデッドリンクがあります。
どんな助けでもありがたいです。
最終的にここで答えを見つけました:
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);
}
}