计算机图形学之绘制椭圆

参考学习了一些前辈的代码,总结了以下这个,感谢前人栽树,同时欢迎交流。

整个画圆利用了椭圆的四对称性,故只需画出四分之一椭圆就可利用对称性就可以画出整个椭圆。

  • 专门写了一个函数来画椭圆的点,其中(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);
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值