【文档说明】计算机图形学教学4课件.pptx,共(30)页,276.126 KB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-77503.html
以下为本文档部分文字说明:
计算机图形学教学4课件RepresentationofcircleRyyxx2020)()(Originaldefinitionequivalentdefinitions)offset),((00222yxRyx22xRy]2,0[sincosR
yRxInefficientalgorithms},...,1,0{22RxxRy•在扫描转换时,仅考虑其在第一象限的第二个1/8圆.(x,y)原点(x,-y)(-x,y)(-x,-y)X轴Y轴y=x直线(y,x)(y,-x)(-y,x)(-y,-x)BAEi
ght-WaySymmetryMidpointCircleAlgorithm(1)•原理:0181k:圆弧上的切线斜率满足在上ChoicesfornextpixelChoicesforcurrentpixelP=(xk,yk)MSEMEMSEEPreviouspixel•定义圆函
数:fxyxyr(,)222fxyxyxyxy(,)(,)(,)(,)000位于圆边界内位于圆边界上位于圆边界外)21,1()(kkkyxfMfd特点:引入判别参数:MidpointCircleAlgorithm(2)•算法描述:(假设X方向的步长为1)
),1(E0)1,1(0kkkkkkyxdyxSEd点为:时,下一点应取当;点为:时,下一点应取当?:howtocalculatedkefficiently?MidpointCircleAlgorithm(3)222)5.0()1(ryxdii
k使用增量计算方法改进判别参数的计算效率MidpointCircleAlgorithm(4)ChoicesfornextpixelChoicesforcurrentpixelP=(xk,yk)MSEMEMSEEPreviouspixel3232)5.0()
1()5.0(]1)1[(()5.0,2(2222221kkkkkkkkkkxdxryxryxyxfd)5.0,2(M),1E(0d)1(Ekkkkkyxyx下次中点为,则时
,选点当MidpointCircleAlgorithm(5)ChoicesfornextpixelChoicesforcurrentpixelP=(xk,yk)MSEMEMSEEPreviouspixel)5.1,2(M)1,1E(0d)2(SE
kkkkkyxyxS则下次中点为,时,选点当5)(25)(2)5.0()1(]1)5.0[(]1)1[(()5.1,2(2222221kkkkkkkkkkkkyxdyxryxr
yxyxfdMidpointCircleAlgorithm(6)判别参数d的递推公式如下:初值:0)11(5)(20)1(321kkkkkkkkkkkkdyxyxddyxxdd,+选,,+选递推公式:rrfd25.1)5.0,1(ry0x
000,关于计算效率的考虑:eliminatethefraction考虑:点的选择只与判别量的符号相关引入:rprd125.100对应:初值:25.0kkdp25.00kkpd对应于判别式MidpointCircleA
lgorithm(7)•递推公式中其它与d有关的式子可把d直接换成pk。•由于pk的初值为整数,且在运算过程中的增量也是整数,故pk始终是整数,所以pk<-0.25等价于pk<0。
opypyyxxppyxppxpprpkkkkkkkkkkkkkkkk10105)(203211110算法:为决策参数的中点画圆则以结论:MidpointCircleAlgorithm(8)例:Center(0,0),r=8MidpointCircleAlgorithm(9)迭
代必须满足点的坐标x<ytimexypkPutpixel(x,y)008-7(0,8)118-4(1,8)2281(2,8)337-6(3,7)4473(4,7)5562(5,6)6655•提高计算效率,321kkxd令类似地:310d初值:rd25
20初值:MidpointCircleAlgorithm(10)5)(22kkkyxd则21kkddddd,x=x+1,y=y-1,,x=x+1,y=y0d当0d当22)32(3)1(23211111kkkkkdxxxd
040221212dddddkkkMidpointCircleAlgorithm(11)xdyd1d2x+1d<0d+d1yd1+2d2+2d≥0d+d2y-1d1+2d2+4以上结论可归结为下表,10rd初值:,310drd2520
作业:按上述表格法,画圆心在(5,7),半径为11的圆在第一象限的部分。VoidMidPointCircle(intr,intcolor){intx,y,d;x=0;y=r;d=1-r;delta1=3;delta2=5-2
r;drawpiexl(x,y,color);while(y>x){if(d<0){d+=delta1;delta2+=2;}else{d+=delta2;delta2+=4;y--}delta1+=2;x++;putpiexl(x,y,co
lor);putotherpiexl(x,y,color);}//while}//endMidpointCircleAlgorithm(12)Bresenham画圆算法BresenhamAlgorithm(1)22222
2)1()1()()()1()(RyxLDRyxHDiiiiChoicesfornextpixelChoicesforcurrentpixelP=(xi,yi)MSEMEMLHPreviousp
ixel问题:在P点已确定的前提下,当前需要在点H和点L中选择。思想:用两点到圆弧的距离的远近来判别选哪个点。定义两个候选点到圆弧的距离平方差为:BresenhamAlgorithm(2))()(LDHDd构造判别参数:(1)在圆弧的两侧D(H)>0
,D(L)<0因此,当d≥0时,选L点当d<0时,选H点ChoicesfornextpixelChoicesforcurrentpixelP=(xi,yi)MSEMEMLHPreviouspixelH,L点的分布只有三种情况:在圆弧的两
侧;同在圆弧的内侧;同在圆弧的外侧。BresenhamAlgorithm(3)(2)同在圆弧外侧D(H)>0,D(L)>0此时,d>0,选L点(3)同在圆弧内侧D(H)<0,D(L)<0此时,d<0,选H点ChoicesfornextpixelChoicesforcur
rentpixelP=(xi,yi)MSEMEMLHPreviouspixel因此,三种情况可统一写为:当d≥0时,选L点;当d<0时,选H点圆的内接正多边形迫近法基础知识(1)--三角函数sincosryrx),(yxprsincoscos
sin)sin(sinsincoscos)cos(基础知识(2)--矩阵表示vducyvbuax表达式:可写成矩阵形式:vudcbayx基础知识(3)--矢量及其运
算abcacbcba),(yxPijjyixPyxP圆的内接正多边形迫近法(1)222ryx定义圆的方程:内接正n边形顶点为niyxpiii,.....,1,0),,(ip1ipi图4-6圆的多边形迫近
iiiiryrxsincos由图可知,pi的幅角为θi,则圆的内接正多边形迫近法(2)•使用增量计算确定多边形顶点:sincos)cos(1iiiiyxrx同理:cossin)sin(1iiiiyxryip1i
pi圆的内接正多边形迫近法(3)上述递推公式可用矩阵形式表示为:iiiiyxyxcossinsincos11其中,α是常数,计算一个顶点只需四次乘法。采用这种方法扫描转换圆弧只需4n次乘法,外加用中点
算法生成长度约为2πR的直线段的计算量。圆的内接正多边形迫近法(4)2nn确定:由夹角顶点数值:则大距离多边形与圆弧之间的最为指定逼近误差值和边数如何确定)(:ndd2cosrrdrrarccos2圆的内接
正多边形迫近法(5)改进的增量计算:求一个顶点只做两次乘法,但需使用两个初始点1cos21iipOpOipO显然:1111cos2iiiiiiyxyxyx亦即:ip1ip1ipOpB