案例4椭圆中点Bresenham算法.ppt

案例4椭圆中点Bresenham算法.ppt

ID:60977865

大小:172.51 KB

页数:13页

时间:2021-01-16

案例4椭圆中点Bresenham算法.ppt_第1页
案例4椭圆中点Bresenham算法.ppt_第2页
案例4椭圆中点Bresenham算法.ppt_第3页
案例4椭圆中点Bresenham算法.ppt_第4页
案例4椭圆中点Bresenham算法.ppt_第5页
资源描述:

《案例4椭圆中点Bresenham算法.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、计算机图形学实践教程(VisualC++版)(第2版)2017.1.10案例4椭圆中点Bresenham算法知识点绘制1/4椭圆弧的上半部分和下半部分的中点Bresenham算法原理。下半部分椭圆误差项的初始值计算方法。顺时针四分法绘制椭圆的中点Bresenham算法。给定矩形的两个对角点绘制椭圆。鼠标按键消息映射方法。案例描述在窗口客户区内按下鼠标左键选择矩形的一个对角点,同时移动鼠标指针到矩形的另一个对角点,弹起鼠标左键绘制矩形的内切椭圆。效果图图4-1效果图原理图4-2椭圆弧的临界点的定义在区域Ⅰ内,

2、有即dx>dy所以x方向为主位移方向;在临界点处,有dx=dy;在区域Ⅱ内,有即dy>dx,所以y方向为主位移方向。显然,在临界点处,主位移方向发生改变。,,原理图4-3椭圆弧的中点算法原理x方向为主位移方向y方向为主位移方向在上半区域Ⅰ,x方向上每次加1,y方向上减1不减1取决于中点误差项的值;在下半区域Ⅱ,y方向上每次减1,x方向上加不加1取决于中点误差项的值。算法(1)根据鼠标选择的矩形对角点计算椭圆的长半轴a和短半轴b。(2)定义椭圆当前点坐标x,y、定义中点误差项d1与d2、定义像素点颜色clr。

3、(3)计算,x=0,y=b,clr=RGB(0,0,255)。(4)绘制点(x,y)及其在四分椭圆中的另外3个对称点。(5)判断d1的符号。若d1<0,则(x,y)更新为(x+1,y),d1更新为d1+b2(2x+3);否则(x,y)更新为(x+1,y-1),d1更新为d1+b2(2x+3)+a2(-2y+2)。(6)当时,重复步骤(4)与(5),否则转到步骤(7)。(7)计算下半部分d2的初值:。(8)绘制点(x,y)及其在四分椭圆中的另外3个对称点。(9)判断d2的符号。若d2<0,则(x,y)更新为(

4、x+1,y-1),d2更新为d2+b2(2x+2)+a2(-2y+3);否则(x,y)更新为(x,y-1),d2更新为d2+a2(2y+3)。(10)如果y≥0时,重复步骤(8)和(9),否则结束。算法圆心在坐标系原点的1/8圆中点Bresenham算法如下:(1)根据鼠标选择的直线端点计算圆的半径R。(2)定义圆当前点坐标x,y、定义中点误差项d、定义像素点颜色clr。(3)计算,x=0,y=R,clr=RGB(0,0,255)。(4)绘制点(x,y)及其在八分圆中的另外7个对称点。(5)判断d的符号。若

5、d<0,则(x,y)更新为(x+1,y),d更新为d+2x+3;否则(x,y)更新为(x+1,y-1),d更新为d+2(x-y)+5。(6)当x小于等于y,重复步骤(4)与(5),否则结束。代码(1)椭圆中点Bresenham函数voidCTestView::MBEllipse(CDC*pDC){doublex,y,d1,d2,a,b;a=fabs(p1.x-p0.x)/2;b=fabs(p1.y-p0.y)/2;x=0;y=b;d1=b*b+a*a*(-b+0.25);EllipsePoint(x,y,p

6、DC);while(b*b*(x+1)0){if(d2<0){d2+=b*b*(2*x+2)+a*a*(-2*y+3)

7、;x++;}else{d2+=a*a*(-2*y+3);}y--;EllipsePoint(x,y,pDC);}程序代码(2)四分法画椭圆子函数voidCTestView::EllipsePoint(doublex,doubley,CDC*pDC){CP2pc=CP2((p0.x+p1.x)/2.0,(p0.y+p1.y)/2.0);//椭圆中心坐标COLORREFclr=RGB(0,0,255);//定义椭圆的颜色pDC->SetPixelV(Round(x+pc.x),Round(y+pc.y),clr

8、);pDC->SetPixelV(Round(-x+pc.x),Round(y+pc.y),clr);pDC->SetPixelV(Round(x+pc.x),Round(-y+pc.y),clr);pDC->SetPixelV(Round(-x+pc.x),Round(-y+pc.y),clr);}总结本案例绘制的是任意椭圆,也可以用于绘制长半轴与短半轴相等的圆。由于可以使用鼠标任意指定矩形的对角点,所以椭圆中

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

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

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