永发信息网

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

答案:1  悬赏:40  手机版
解决时间 2021-04-02 20:31
编程实现中点画线法的直线的绘制和Bresenham算法的直线绘制
最佳答案
中点画线法
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 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;
}
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
永嘉桥头有什么好玩的
android tablayout 怎么实现底部导航栏突起
柏拉图认为:在理想的社会中,有正义感和理性
求助,贵阳夜市最晚几点呀,十点飞机到,还能
影响水产动物碳水化合物利用的因素有哪些
请问match怎么读
 女方非永久香港居民大陆生私生子,
如图所示,热气球匀速升空,其机械能的变化情
三才配合不善者,大都中年前后编入黄泉之籍.然
QDII是什么意思,说得简单点。不要那些概念性
求神崎日照这张高清无水印图片
善良的心灵像什么?
武术中鱼跃怎么练
干桔梗如何水发
红军西路军
推荐资讯
请问备周则意怠是什么意思?
WORD中的页码设置有没有“全角小四”这个格式
产品底色是黑色,外观镭雕图案可以调颜色吗?
火车制动的制动装置
销售中,一般都会在产品价格上增加20%点, 比
vivo x6s plus D和 vivo x6 plus D 有什么区
76-9先算什么,在算什么
清代泡茶法以什么为主
公司要外派 女友给脸色 我到底去还是不去
俗话说:"狼欺负羊"为什么"羊"反来欺负"狼"呢?
昆明光华学校幕后黑手,潜规则!我对昆明光华
小米八周年是小米8吗
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?