没有及时回答,很抱歉。 这里介绍一个简单的“微分法”,不知道符合你要求吗。 因为在计算机中两点的最短距离是唯一的,就是直线, 而两点的最大距离是无法讨论的。 若感兴趣,再介绍Bresenham算法。先在过程外定义数组变量,用于存放经过点坐标。 X,Y:array [0..1024] :integer;procedure dda(x1,y1,x2,y2); //始点(x1,y1); 终点(x2,y2) begin if abs(x2-x1)>=abs(y2-y1) then length:=abs(x2-x1) else length:=abs(y2-y1); dx:=(x2-x1)/length; dy:=(y2-y1)/length; xx:=x1; yy:=y2; for i:=0 to length do begin x[i]:=round(xx); y[i]:=round(yy); xx:=xx+dx; yy:=yy+dy; end; end;过程中未定义的变量自己定义一下。 试试。
笔误修改: X,Y:array [0..1024] :integer; 应为: x,y:array [0..1024] of integer;
应在从相反方向去饶,(如果可以的话,)
跟上面一样,就看你经过多少个点了,作起来不复杂呀。
[email protected]
你是学生还是职员?
这里介绍一个简单的“微分法”,不知道符合你要求吗。
因为在计算机中两点的最短距离是唯一的,就是直线,
而两点的最大距离是无法讨论的。
若感兴趣,再介绍Bresenham算法。先在过程外定义数组变量,用于存放经过点坐标。
X,Y:array [0..1024] :integer;procedure dda(x1,y1,x2,y2); //始点(x1,y1); 终点(x2,y2)
begin
if abs(x2-x1)>=abs(y2-y1)
then length:=abs(x2-x1)
else length:=abs(y2-y1);
dx:=(x2-x1)/length;
dy:=(y2-y1)/length;
xx:=x1;
yy:=y2;
for i:=0 to length do
begin x[i]:=round(xx);
y[i]:=round(yy);
xx:=xx+dx;
yy:=yy+dy;
end;
end;过程中未定义的变量自己定义一下。
试试。
X,Y:array [0..1024] :integer;
应为:
x,y:array [0..1024] of integer;
你好!
非常感谢我会尽快去完成我的程序的。希望以后能与你学习。
我的邮件地址是:[email protected] 希望以后有机会再向你当面学习。 礼! 致!
erp
2002-03-19
你好!
非常感谢我会尽快去完成我的程序的。希望以后能与你学习。
我的邮件地址是:[email protected] 希望以后有机会再向你当面学习。 礼! 致!
erp
2002-03-19