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;
}
}
}
}
DDA算法和Bresenham算法生成直线
最新推荐文章于 2022-09-15 11:41:28 发布