文档介绍:计算机图形学实验报告实验一
贵州大学实验报告学院:
计信学院专业:
计科班级:
计科 101 姓名罗琳学号 1008060016实验组实验时间 2013-3-27 指导教师直线最逼近的象素点。
根据直线的斜率来确定变量在 x 或 y 方向递增一个单位。另一个方向 y 或 x 的增量为 0 或 1,它取决于实际直线与最接近网格点位置的距离。这一距离称为误差。算法的巧妙构思,使每次只需检查误差项(增量)的符号即可。
定义决策变量:
d=d+k(0=)
实验内容实验源程序如下:
voidCLineDlg::OnRadioPlus()// 缺省选择
{//TODO:AddyourcontrolnotificationhandlercodehereAlgorithm=
0;// 算法选择 }voidCLineDlg::OnRadio(){
//TODO:AddyourcontrolnotificationhandlercodehereAlgorith
m=2;}voidCLineDlg::OnRadio1(){//TODO:Addyourcontrolnotifica
tionhandlercodehereAlgorithm=1;}voidCLineDlg::OnLinedraw(){
//TODO:AddyourcontrolnotificationhandlercodehereCWnd*pWnd=G
etDlgItem(IDC_STATIC);CDC*pControlDC=pWnd->GetDC();pWnd-
>Invalidate();pWnd->UpdateWindow();pControlDC-
>SetViewportOrg(0,0);pControlDC->MoveTo(0,0);pControlDC-
>LineTo(0,335);pControlDC->MoveTo(0,0);pControlDC-
>LineTo(400,0);inti,j;for(i=0;i<=400;i+=10)for(j=0;j<=335;j
++)pControlDC-
>SetPixel(i,j,RGB(200,200,200));for(i=0;i<=335;i+=10)for(j=
0;j<=400;j++)pControlDC-
>SetPixel(j,i,RGB(200,200,200));intx1,y1,x0,y0;UpdateData(t
rue);
x1=m_x1;x0=m_x0;y1=m_y1;y0=m_y0;switch(Algorithm){case0:
{inta,b,d1,d2,d,x,y;floatdy,dx,m;dx=float(x1-
x0);dy=float(y1-y0);m=dy/dx;if(m<=1){a=y0-y1;b=x1-x0;d=2*a+b;d1=2*a;d2=2*(a+b);x=x0;y=y0;pControlDC->SetPixel(x,y,RGB(0,25