编程实现中点画线法的直线的绘制和Bresenham算法的直线绘制

全部分,求上传... 全部分,求上传 展开
 我来答
若以下回答无法解决问题,邀请你更新回答
屋石
2013-11-02 · TA获得超过5355个赞
知道大有可为答主
回答量:1909
采纳率:86%
帮助的人:917万
展开全部
中点画线法
void MidPoint_Line(x0, y0, x1, y1, color) i
nt x0, y0, x1, y1, color;
{ int a, b, delta1, delta2, d, x, y;
a=y0-y1; b=x1-x0;
d=2*a+b; delta1=2*a; delta2=2*(a+b);
x=x0; y=y0;putpixel(x, y, color);
while(x<x1) {
if(d<0) { x++; y++; d+=delta2; }
else { x++; d+=delta1; }
putpixel(x, y, color); }}
Bresenham算法
int sign( x)
/*==================================*/
int x;
{
if(x>0)return 1;
if(x==0)return 0;
if(x<0)return -1;
}
/*=======================================================*/
void Generialzed_Integer_Bresenham_Line(x1,y1,x2,y2,color)
int x1,y1,x2,y2,color;
{
int x,y,dx,dy,s1,s2,temp,interchange,e,i;
x=x1;y=y1;
dx=abs(x2-x1);
dy=abs(y2-y1);
s1=x2-x1;
s2=y2-y1;

s1=sign(s1);
s2=sign(s2);
if(dy>dx)
{
temp=dx;
dx=dy;
dy=temp;
interchange=1;
}

else interchange=0;
e=2*dy-dx;
for(i=1;i<=dx;i++)
{
putpixel(x,y,color);
if(e>0)
{
if(interchange==1) x=x+s1;
else y=y+s2;
e=e-2*dx;
}
if(interchange) y=y+s2;
else x=x+s1;
e=e+2*dy;
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式