中点画线法算法中点画线法算法
中点画线法算法:
void CMyView::OnMidpointline()
{
CDC *pDC=GetDC();
int x0=100,y0=100,x1=400,y1=300,c=RGB(0,0,0); //黑色直线
float a,b,d1,d2,d,x,y;
a=y0-y1;
b=x1-x0;
d=2*a+b;
d1=2*a;
d2=2*(a=b);
x=x0;y=y0;
pDC->SetPixel(x,y,c);
while(xSetPixel(x,y,c)...
中点画线法算法
中点画线法算法:
void CMyView::OnMidpointline()
{
CDC *pDC=GetDC();
int x0=100,y0=100,x1=400,y1=300,c=RGB(0,0,0); //黑色直线
float a,b,d1,d2,d,x,y;
a=y0-y1;
b=x1-x0;
d=2*a+b;
d1=2*a;
d2=2*(a=b);
x=x0;y=y0;
pDC->SetPixel(x,y,c);
while(xSetPixel(x,y,c); }
ReleaseDC(pDC);
}
•例:用中点画线法P0(0,0) P1(5,2)a=y0-y1=-2 b=x1-x0=5
d0=2a+b=1 d1=2a=-4 d2=2(a+b)=6
I xi yid
1 0 0 1
2 1 0 -3
3 2 1 3
4 3 1 -1
5 4 2 5
6 5 2 1
Bresenham算法:
void CTestView ::OnBresenhamline() {
CDC *pDC=GetDC();
int x1=100,y1=200,x2=600,y2=800,color=RGB(0,0,255);
int i,x,y,dx,dy;
float k,e;
dx=x2-x1;
dy=y2-y1;
k=dy/dx;
e=-0.5; x=x1; y=y1;
for(i=0;i<=dx;i++)
{ pDC->SetPixel(x,y,color);
x++;
e=e+k;
if(e>=0) { y++; e=e-1;}
}
}
例:Line: P(0, 0), P(5,2) 01
k=dy/dx=0.4
x y e
0 0-0.5
1 0 -0.1
32 1 -0.7
3 1 -0.32
4 2 -0.91
5 2 -0.5
0 1 2 3 4 5
中点画圆:
void CTestView::OnMindpointcircle() {
CDC *pDC=GetDC();
int x=100,y=200,r=150,color=RGB(0,0,255);
float d;
x=0; y=r; d=1.25-r;
pDC->SetPixel(x,y,color);
while(x<=y)
{
if(d<0) d+=2*x+3;
else {d+=2*(x-y)+5;y--;}
x++;
pDC->SetPixel(x,y,color);
}
}
Bresenham画圆:
void CMyView::OnBresenhamcircle()
{
CDC *pDC=GetDC();
int x0=100,y0=100,x,y,r=80,c=0; //黑色圆弧
float e,d;
e=3-2*r;x=0;y=r;
while(x<=y)
{
if (e<0)
{e=e+4*x+6;x++;}
else{e=e+4*(x-y)+10; x++;y--;}
pDC->SetPixel(x+x0,y+y0,c);
pDC->SetPixel(-x+x0,y+y0,c);
pDC->SetPixel(-x+x0,-y+y0,c);
pDC->SetPixel(x+x0,-y+y0,c);
pDC->SetPixel(y+x0,x+y0,c);
pDC->SetPixel(-y+x0,x+y0,c);
pDC->SetPixel(-y+x0,-x+y0,c);
pDC->SetPixel(y+x0,-x+y0,c);
}
ReleaseDC(pDC);
}
本文档为【中点画线法算法】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。