已知线段x1,y1,x2,y2的起始坐标及长度如1000,若将其等分为100段,求每段的起始坐标(50分)

  • 主题发起人 主题发起人 hubo8888
  • 开始时间 开始时间
H

hubo8888

Unregistered / Unconfirmed
GUEST, unregistred user!
已知线段x1,y1,x2,y2的起始坐标及长度如1000,若将其等分为100段,求每段的起始坐标
 
a,b,c=1000 sinA= a/c cosA=b/c
a1,b1, c1=10 第一段
a1=c1 * sin A
b1=c1 * cos A
 
我的问题x1,y1起点坐标x2,y2终点坐标,假如长度为1000,求等分后的相关坐标michael.ma的这种算法是否符合,请详解,谢谢!
 
太简单了.

用不了用什么 sin cos 的.

如果是我,我这样处理
var
dx:double;
dy:double;

dx := (x2-x1) / 100;
dy := (y2-y1) /100;

每段的 dx,dy 相加就可以了. 与 x1.y1 到 x2,y2 的长度1000 是无关的.
 
补充.

因为第 n 个线段的终于,就是 第 n+1 个线段的起点.
p(n+1).x := p(n).x + dx;
p(n+1).y := p(n).y + dy;
 
就可以推导出
p(n).x := p0.x + n * dx;
p(n).y := p0.y + n * dy;

这里
p0.x = x1;
p0.y = y1;
 
同意楼上意见
 
同意QSmile的说法,其实很简单,别想复杂了,长度根本没用的。
 
too easy!!!
 
如果是直线的话,只接等分线段就可以了,这个是小学数学吧。
 
function LinePoint(l1, l2, x1, x2, y1, y2: Integer): TPoint;
begin
Result.X := Round((l2 * (x2 - x1)) / l1 + x2);
Result.Y := Round((l2 * (y2 - y1)) / l1 + y2);
end;
 
QSmile说法正确
 

Similar threads

D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部