我的线段有开始s(x1,y1)和结束e(x2,y2) . 我通过使用欧几里德距离来计算s和e之间的距离d = sqrt((x1-x2)(x1-x2)(y1-y2)(y1-y2))如何在距离d1处找到线段上的点( 0 <d1 <d)?
线性的主题是一切都是成比例的 .
d1 是从 0 到 d 的 d1/d 分数 .
d1
0
d
d1/d
因此,您正在寻找的点 p 与从 s 到 e 的路径相同 . 所以让 r = d1/d . 然后
p
s
e
r = d1/d
p = (x1 + r*(x2-x1), y1 + r*(y2-y1))
请注意,当 r 等于0时, p 为 (x1 + 0*(x2-x1), y1 + 0*(y2-y1)) = (x1, y1) = s . 当 r 等于1时, p 为 e = (x2, y2) . 当 r 从 0 变为 1 时, p 从 s 线性地变为 t - 即,作为 r 的线性函数 .
r
(x1 + 0*(x2-x1), y1 + 0*(y2-y1)) = (x1, y1) = s
e = (x2, y2)
1
t
parametric Line 的定义如下:
x(t)=x1+(x2-x1)*t; y(t)=y1+(y2-y1)*t;
其中 t 是范围内的参数 <0.0,1.0>
<0.0,1.0>
if t=0.0 然后结果给出点(x1,y1)
t=0.0
if t=1.0 然后结果是给出点(x2,y2)
t=1.0
所以如果你需要从距离开始的距离点,那么:
D=sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)); x(d)=x1+(x2-x1)*d/D; y(d)=y1+(y2-y1)*d/D;
其中 D 是行长度
D
和 d 是距起点的距离
2 回答
线性的主题是一切都是成比例的 .
d1
是从0
到d
的d1/d
分数 .因此,您正在寻找的点
p
与从s
到e
的路径相同 . 所以让r = d1/d
. 然后请注意,当
r
等于0时,p
为(x1 + 0*(x2-x1), y1 + 0*(y2-y1)) = (x1, y1) = s
. 当r
等于1时,p
为e = (x2, y2)
. 当r
从0
变为1
时,p
从s
线性地变为t
- 即,作为r
的线性函数 .parametric Line 的定义如下:
其中
t
是范围内的参数<0.0,1.0>
if
t=0.0
然后结果给出点(x1,y1)if
t=1.0
然后结果是给出点(x2,y2)所以如果你需要从距离开始的距离点,那么:
其中
D
是行长度和
d
是距起点的距离