900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 计算机图形学画圆和直线代码 计算机图形学作业(中点法画直线和八分画圆法).doc...

计算机图形学画圆和直线代码 计算机图形学作业(中点法画直线和八分画圆法).doc...

时间:2021-05-08 16:01:56

相关推荐

计算机图形学画圆和直线代码 计算机图形学作业(中点法画直线和八分画圆法).doc...

中点法画直线:

void MidBresenhamLine(CDC *pDC,int x0,int y0,int x1,int y1,int color){

int dx,dy,d,up,down,x,y;

if(x0>x1){

x=x1;x1=x0;x0=x;

y=y1;y1=y0;y0=y;

}

x=x0;y=y0;

dx=x1-x0;dy=y1-y0;

d=dx-2*dy;

up=2*x-2*y;

down=-2*dy;

while(x<=x1){

pDC->SetPixel(x,y,color);

x++;

if(d<0){

y++;

d+=up;

}

else d+=down;

}

}

void CMy213View::OnButton32772()

{

CDC *pDC;

pDC=this->GetDC();

int x0=50,y0=50,x1=300,y1=300,color=333;

MidBresenhamLine(pDC,x0,y0,x1,y1,color);

this->ReleaseDC(pDC);

// TODO: 在此添加命令处理程序代码

}

八分法画圆:

void CirclePoint(CDC *pDC,int x,int y,int color){

pDC->SetPixel(x+350,y+350,color);

pDC->SetPixel(x+350,-y+350,color);

pDC->SetPixel(-x+350,y+350,color);

pDC->SetPixel(-x+350,-y+350,color);

pDC->SetPixel(y+350,x+350,color);

pDC->SetPixel(-y+350,x+350,color);

pDC->SetPixel(y+350,-x+350,color);

pDC->SetPixel(-y+350,-x+350,color);

}

void MidBresenhamCircle(CDC *pDC,int r,int color){

int x,y,d;

x=0;y=r;d=1-r;

while(x<=y){

CirclePoint(pDC,x,y,color);

if(d<0)d+=2*x+3;

else{

d+=2*(x-y)-5;

y--;

}

x++;

}

}

void CmbView::Onbbb()

{

CDC *pDC;

pDC=this->GetDC();

int r=60,color=333;

MidBresenhamCircle(pDC,r,color);

this->ReleaseDC(pDC);

// TODO: 在此添加命令处理程序代码

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。