您的位置:首页 > 其它

DDA算法和Bresenham算法生成直线

2016-06-14 09:21 387 查看
public class DDA {
public static void main(String[] args)
{
System.out.println("DDA:");
DDALine(1,2,12,3);
System.out.println("Bresenhem:");
BresenhamLine(4,8,12,12);
}
public static void DDALine(int x1,int y1,int x2,int y2)
{
float dx,dy,MetaDelta,step;
step = 0;
float x=x1;
float y=y1;
MetaDelta=(Math.abs(x1-x2)>Math.abs(y1-y2))?Math.abs(x1-x2):Math.abs(y1-y2);
dx=Math.abs(x1-x2)/MetaDelta;
dy=Math.abs(y1-y2)/MetaDelta;
System.out.println(dx+" "+dy);
while(step<=MetaDelta)
{
System.out.println(Math.round(x)+" "+Math.round(y));
x+=dx;
y+=dy;
step++;

}
}

public static void BresenhamLine(int x1,int y1,int x2,int y2)
{
int d,y,x,delta1,delta2;
x=x1;
y=y1;
d=(y2-y1)*2-(x2-x1);
delta1=(y2-y1)*2-2*  (x2-x1);
delta2=(y2-y1)*2;
while(x<=x2)
{
System.out.println(x+" "+y);
x++;
if(d>0)
{
d+=delta1;
y++;
}
else
{
d+=delta2;
}
}

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息