参考学习了一些前辈的代码,总结了以下这个,感谢前人栽树,同时欢迎交流。
整个画圆利用了椭圆的四对称性,故只需画出四分之一椭圆就可利用对称性就可以画出整个椭圆。
- 专门写了一个函数来画椭圆的点,其中(x0,y0)为椭圆圆心坐标,根据点(x,y)来画出其四对称点,DrawPixel()为绘制点的函数。
function DrawEclipsePoint(x0, y0, x, y, color) {
DrawPixel(x0 + x, y0 + y, color);
DrawPixel(x0 - x, y0 + y, color);
DrawPixel(x0 + x, y0 - y, color);
DrawPixel(x0 - x, y0 - y, color);
}
- 中点画椭圆算法
function MiddlePiontEclipse(x0, y0, a, b, color) {
//alert("dre eclipse");
var a2 = a * a, b2 = b * b;
var d2, d1 = b2 + a2 * (0.25 - b);
var x = 0, y = b;
DrawEclipsePoint(x0, y0, x, y, color);
//在上面的部分,|k|<1
while (b2 * (x + 1) < a2 * (y - 0.5)) {
if (d1 < 0)
d1 += b2 * (2 * x + 3);
else {
d1 += b2 * (2 * x + 3) + a2 * (2 - 2 * y);
y--;
}
x++;
DrawEclipsePoint(x0, y0, x, y, color);

最低0.47元/天 解锁文章
8737

被折叠的 条评论
为什么被折叠?



