案例4椭圆中点Bresenham算法

上传人:仙*** 文档编号:173776678 上传时间:2022-12-12 格式:PPT 页数:13 大小:172.51KB
返回 下载 相关 举报
案例4椭圆中点Bresenham算法_第1页
第1页 / 共13页
案例4椭圆中点Bresenham算法_第2页
第2页 / 共13页
案例4椭圆中点Bresenham算法_第3页
第3页 / 共13页
点击查看更多>>
资源描述
计算机图形学实践教程(VisualC+版)(第2版)2017.1.10案例4 椭圆中点Bresenham算法知识点知识点n绘制1/4椭圆弧的上半部分和下半部分的中点Bresenham算法原理。n下半部分椭圆误差项的初始值计算方法。n顺时针四分法绘制椭圆的中点Bresenham算法。n给定矩形的两个对角点绘制椭圆。n鼠标按键消息映射方法。案例描述案例描述 在窗口客户区内按下鼠标左键选择矩形的一个对角点,同时移动鼠标指针到矩形的另一个对角点,弹起鼠标左键绘制矩形的内切椭圆。效果图效果图图4-1 效果图原理原理图4-2椭圆弧的临界点的定义1dxdy1dxdy在区域内,有 即dxdy所以x方向为主位移方向;在临界点处,有dx=dy;在区域内,有 即dydx,所以y方向为主位移方向。显然,在临界点处,主位移方向发生改变。,原理原理图4-3 椭圆弧的中点算法原理x方向为主位移方向y方向为主位移方向在上半区域,x方向上每次加1,y方向上减1不减1取决于中点误差项的值;在下半区域,y方向上每次减1,x方向上加不加1取决于中点误差项的值。算法算法(1)根据鼠标选择的矩形对角点计算椭圆的长半轴a和短半轴b。(2)定义椭圆当前点坐标x,y、定义中点误差项d1与d2、定义像素点颜色clr。(3)计算,x=0,y=b,clr=RGB(0,0,255)。(4)绘制点(x,y)及其在四分椭圆中的另外3个对称点。(5)判断d1的符号。若d10,则(x,y)更新为(x+1,y),d1更新为d1+b2(2x3);否则(x,y)更新为(x+1,y1),d1更新为d1b2(2x+3)a2(2y+2)。(6)当 时,重复步骤(4)与(5),否则转到步骤(7)。(7)计算下半部分d2的初值:。(8)绘制点(x,y)及其在四分椭圆中的另外3个对称点。(9)判断d2的符号。若d20,则(x,y)更新为(x+1,y1),d2更新为d2b2(2x2)a2(2y3);否则(x,y)更新为(x,y1),d2更新为d2a2(2y+3)。(10)如果y0时,重复步骤(8)和(9),否则结束。算法算法圆心在坐标系原点的1/8圆中点Bresenham算法如下:(1)根据鼠标选择的直线端点计算圆的半径R。(2)定义圆当前点坐标x,y、定义中点误差项d、定义像素点颜色clr。(3)计算,x=0,y=R,clrRGB(0,0,255)。(4)绘制点(x,y)及其在八分圆中的另外7个对称点。(5)判断d的符号。若d0,则(x,y)更新为(x1,y),d更新为d+2x3;否则(x,y)更新为(x1,y1),d更新为d2(xy)5。(6)当x小于等于y,重复步骤(4)与(5),否则结束。代码代码(1)椭圆中点Bresenham函数void CTestView:MBEllipse(CDC*pDC)double x,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,pDC);while(b*b*(x+1)a*a*(y-0.5)/椭圆AC弧段if(d10)if(d2SetPixelV(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);pDC-SetPixelV(Round(-x+pc.x),Round(-y+pc.y),clr);总结 本案例绘制的是任意椭圆,也可以用于绘制长半轴与短半轴相等的圆。由于可以使用鼠标任意指定矩形的对角点,所以椭圆中心的位置会发生改变。在四分法画椭圆子函数中,对中心位置进行了平移,使得矩形成为椭圆的外接矩形。请在四分法画椭圆子函数EllipsePoint()中添加以下语句绘制一个对角点为p0、另一个对角点为p1的矩形,该矩形成为椭圆的外接矩形。如图4-2所示。pDC-MoveTo(Round(p0.x),Round(p0.y);pDC-LineTo(Round(p1.x),Round(p0.y);pDC-LineTo(Round(p1.x),Round(p1.y);pDC-LineTo(Round(p0.x),Round(p1.y);pDC-LineTo(Round(p0.x),Round(p0.y);总结 图4-4 绘制椭圆的外接矩形
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!