欢迎来到天天文库
浏览记录
ID:15290751
大小:77.50 KB
页数:3页
时间:2018-08-02
《直线中点bresenham算法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验一基本图形生成算法实验目的:掌握中点Bresenham绘制直线的原理设计中点Bresenham算法编程实现中点Bresenham算法实验描述:使用中点Bresenham算法绘制斜率为0≤k≤1的直线。算法设计:直线中点Bresenham算法1.输入直线的起点坐标P0(x0,y0)和终点坐标P1(x1,y1)。2.定义直线当前点坐标x,y、定义中点偏差判别式d、定义直线斜率k、定义像素点颜色rgb。3.x=x0,y=y0,计算d=0.5-k,k=(y1-y0)/(x1-x0),rgb=RGB(0,0,255)。4.绘制点(x,y),判断d的符号。若d<0,则(x,y)更新为(x
2、+1,y+1),d更新为d+1-k;否则(x,y)更新为(x+1,y),d更新为d-k。5.如果当前点x小于x1,重复步骤4,否则结束。源程序:1)//TestView.h#include"InputDlg.h"//对话框头文件#defineROUND(a)int(a+0.5)classCTestView:publicCView{…..}2)//TestView.cppvoidCTestView::OnMENUMbline()//菜单函数{InputDlgdlg;if(dlg.DoModal()==IDOK){AfxGetMainWnd()->SetWindowText(":直线
3、中点Bresenham算法");RedrawWindow();Mbline(dlg.m_x0,dlg.m_y0,dlg.m_x1,dlg.m_y1);}}voidCTestView::Mbline(doublex0,doubley0,doublex1,doubley1)//直线中点Bresenham函数{CClientDCdc(this);COLORREFrgb=RGB(255,0,0);//定义直线颜色为红色doublex,y,d,k;x=x0;y=y0;k=(y1-y0)/(x1-x0);d=0.5-k;for(x=x0;x<=x1;x++){dc.SetPixel(ROUN
4、D(x),ROUND(y),rgb);if(d<0){y++;d+=1-k;}elsed-=k;}}运行结果:
此文档下载收益归作者所有