计算机图形学画圆和直线代码,计算机图形学作业(中点法画直线和八分画圆法).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: 在此添加命令处理程序代码

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值