计算机图形学_圆弧的生成

计算机图形学_圆弧的生成

ID:1508351

大小:429.50 KB

页数:19页

时间:2017-11-12

计算机图形学_圆弧的生成_第1页
计算机图形学_圆弧的生成_第2页
计算机图形学_圆弧的生成_第3页
计算机图形学_圆弧的生成_第4页
计算机图形学_圆弧的生成_第5页
资源描述:

《计算机图形学_圆弧的生成》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、计算机图形学ComputerGraphics(CG)4.3.1圆弧的生成1.数值微分法(DDA法)2.中点画圆算法3.Bresenham画圆算法4.正负法6/16/2021与直线的生成类似,圆的生成算法的好坏将直接影响到绘图的效率。本节仅讨论圆心位于坐标原点的圆弧生成算法,对于圆心为任意的圆弧,可以先将其平移到原点,然后光栅化,再平移到原来的位置。6/16/2021圆弧的DDA算法和直线段DDA法类似,也是根据圆弧的微分方程来实现的,我们以圆心在坐标系原点,半径为R的一段圆弧为例来讨论。圆心在原点(0,0),半径为R的方程为:1、数值微分法(

2、DDA法)它的微分方程为:6/16/2021若令即可得离散变量微分方程式为:式中:为一很小的常数。若设为用DDA法顺时针画第一象限的圆弧在X,Y方向的增量值,由上式可知,则有:(4-1)6/16/2021用矩阵表示为:(4-2)但是,由式(4-1)得:所以式(4-1)表示的并不是一个圆,而是一个半径逐渐增大的螺旋线。要得到圆的方程,需要使式(4-2)中系数矩阵行列式值为1.即将式(4-2)中的6/16/2021变为1。若取即能满足要求。即有:6/16/2021也即:(4-3)由(4-3)可知,在计算时我们不用的结果,而是直接引用的值。6/16

3、/20212、中点画圆算法假设x坐标为的各像素点中,与该圆弧最近者已确定,为,那么,下一个与圆弧最近的像素只能是正右方的,或右下方的两者之一。令M为和的中点,易知M的坐标为。显然,若M在圆内,则离圆弧近,应取为下一个像素;否则应取。6/16/2021判别式d:d的初始值为:在d≥0的情况下,取右下方像素,在d<0的情况下,取正右方像素,为了消除在计算判别式初始值产生的浮点数运算,将用4d来代替d。6/16/2021下述程序使用中点画圆算法绘制一个1/8圆弧。voidMidPointCircle(intr,intcolor){intx,y,dx

4、=0;y=r;d=5-4r;CirclePoint(x,y,color);while(x<=y){if(d<=0)d+=8x+12;else{d+=8(x-y)+20;y--;}x++;CirclePoint(x,y,color);}}6/16/20213.Bresenham画圆算法Bresenham画圆算法是最有效的算法之一。Bresenham画圆算法的基本原理是如下图所示,若为已经选定的点,那么下一个可能的像素点为其正右方的点或右下方的点。若到圆弧的距离小于到圆弧的距离,则取,反之取。6/16/2021设R为圆弧的半径,记P(x,y)到原

5、点的距离的平方与圆的半径的平方之差为D(P),即令则下面给出的递推公式。6/16/2021当<0时,点做为下一个像素点,故当≥0时,点做为下一个像素点,故6/16/2021根据算法,可得Bresenham生成圆弧的程序如下:voidbresenham_arc(intR,intcolor){intx,y,d;x=0;y=R;d=3-2*R;while(x

6、;}6/16/20214.生成圆弧的正负法原理:设圆的方程为;假设求得的坐标为;则当在圆内时,有;当在圆外时,有;6/16/2021即求得Pi点后选择下一个象素点Pi+1的规则为:当时,点落在圆弧上。当时,要右走一步,得,这是向圆外方向走去,的坐标为:代入到圆的方程可得:(4-4)6/16/2021当时,要向下走一步,这是向圆内方向走去,的坐标为:代入圆的方程可得:(4-5)公式(4-4)和(4-5)就是计算的递推公式。当判别函数确定后,就可用正负法绘制圆弧。首先规定先向右走一步。6/16/2021Thankyou!6/16/2021

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。