图形学 画圆算法

原创 2018年04月15日 13:29:22

圆的特性

我们的圆中,具有对称的特性,在xy坐标轴中具有八对称的特性。


我们只需要画出一个点 按照八对称性,我们就能获得八个点,所以我们只需要画一个八分之一圆就好了。我们就选择最利于我们思考的第一象限0~Math.sqrt(1)部分,就是上边橘点位置的区域。

中点画圆

我们通过中点到圆的距离(通过符号判定),我们就能选择相应的点。我们每次的选择中点时,增量都是有规律的。

我们通过对直线算法的借鉴,我们发现我们能从圆的方程推导出每次坐标变换的增量。


function MidPointCircle(x,y,r,color) {
  var x0=0;
  var y0=r;
  var d=1.25-r;
  DrawCirclePoint(x0,y0,x,y);
  while (x0<y0) {
    if (d<0) {
      d+=2*x0+3;
    }else {
      d+=2*(x0-y0)+5;
      y0--;
    }
    x0++;
    DrawCirclePoint(x0,y0,x,y);
  }
}
Bresenham画圆算法

对中点算法的改进(其实推导的过程不一样,但是和中点算法很像)

去掉浮点数的运算,我在代码里把很多如a*a变成了a_2的形式,尽量减少运算词数。


//Bresenham画圆
function BresenhamCircle(x,y,r,color) {
  var x0=0;
  var y0=r;
  var d=3-2*r;
  DrawCirclePoint(x0,y0,x,y);
  while (x0<y0) {
    if (d<0) {
      d+=4*x0+6;
    }else {
      d+=4*(x0-y0)+10;
      y0--;
    }
    x0++;
    DrawCirclePoint(x0,y0,x,y);
  }
}

【计算机图形学】基本图形元素:圆的生成算法

08年9月入学,12年7月毕业,结束了我在软件学院愉快丰富的大学生活。此系列是对四年专业课程学习的回顾,索引参见:http://blog.csdn.net/xiaowei_cqu/article/de...
  • xiaowei_cqu
  • xiaowei_cqu
  • 2012-08-27 23:06:35
  • 13562

openCV编写的光栅化中点画圆

  • 2013年05月16日 13:30
  • 18KB
  • 下载

计算机图形学画线及画圆代码

  • 2010年06月20日 13:39
  • 1.87MB
  • 下载

计算机图形学 :中点画圆法

由于安装了easyx的vc6.0只能用initgraph(x,y)初始化一个x*y的第一象限的画板。所以对于书上的画圆法我们需要稍微进行一点改变。这个算法只能画1/8的圆,其它7/8的圆只能通过对称关...
  • su20145104009
  • su20145104009
  • 2015-12-31 10:19:11
  • 2146

用Python&OpenGL采用数值微分法和中点画圆法写图形学作业——会动的时钟

这学期的图形学要用c渣渣写,无奈早已忘了c渣渣怎么拼,只好用Python凑付了,下面的直线算法来自E哥的代码 PyOpenGL的包去LFD下,然后再下一个glut的文件依次放到相应的位置就可以了。...
  • qq_32361793
  • qq_32361793
  • 2017-04-12 21:53:58
  • 252

计算机图形学(二)中点画圆算法讲解与源代码

近些天写了一些关于计算机图形学的算法和源代码!如果喜欢转载请标明出处:并非菜鸟菜鸟的博客 http://blog.csdn.net/syx1065001748源代码下载:可以到我的下载资源里找到! 关...
  • syx1065001748
  • syx1065001748
  • 2015-06-17 22:47:29
  • 3620

计算机图形学:中点画圆算法

在平面解析几何中,圆的方程可以描述为(x – x0)2 + (y – y0)2 = R2,其中(x0, y0)是圆心坐标,R是圆的半径,特别的,当(x0, y0)就是坐标中心点时,圆方程可以简化为x2...
  • u013044116
  • u013044116
  • 2015-10-21 15:18:19
  • 8236

图形学实验一:bresenham算法 画线和画圆

我编程环境用的是codeblock,所以我就在此基础上,做关于此实验的讲解。 首先,先要在codeblocks上配置opencv: http://blog.csdn.net/dupei/arti...
  • sunny_xsc1994
  • sunny_xsc1994
  • 2014-11-08 14:34:15
  • 5413

java实现计算机图形学直线和圆的绘制算法

  • 2015年09月19日 12:34
  • 8KB
  • 下载

计算机图形学实验,课程设计,带详细报告

  • 2012年01月15日 13:11
  • 5.83MB
  • 下载
收藏助手
不良信息举报
您举报文章:图形学 画圆算法
举报原因:
原因补充:

(最多只允许输入30个字)