javascript - 有中点椭圆算法吗?

标签 javascript algorithm graphics

有没有类似中点圆算法的中点椭圆绘制算法?

我在谷歌上搜索过示例,但我发现的任何示例要么不起作用,要么用于填充的椭圆,而不是绘制的。此外,关于中点圆算法的维基百科页面提到了椭圆版本的存在,但有一个谷歌似乎无法帮助解决的死链接。

如有任何帮助,我们将不胜感激。

最佳答案

最终在这里找到了答案:

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);
    }
}

关于javascript - 有中点椭圆算法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15474122/

相关文章:

javascript - 将动态按钮的值传递给模态表单

javascript - 在 Backbone View 中使用 jQuery 设置 contenteditable 样式

递归中的 Javascript 'this' 上下文?

Java : VolatileImage slower than BufferedImage

algorithm - 什么是获得颜色以使图像上的文本突出的好算法?

javascript - 带有对象的扁平化数组

.net - 如何处理与实时流媒体服务器连接的缓慢的消费者/客户端

algorithm - 在各种组合中增加值(value)

graphics - 处理路径追踪中的点光源和精确反射

javascript - 二进制转换程序