line - 在给定距离沿线查找 3D 点

标签 line distance direction

我有一个问题,请告诉我我的解决方案是否正确。

我在位置 A(x1,y1,z1) 和原点 O(0,0,0) 处有一个已知点,我想找到点 B(x2,y2,z2) 的坐标位于OA线上,距离OB是OA的1.2倍。

所以,我的想法是得到O点和A点形成的线的方程。 OA的方向为(-x1, -y1, -z1),所以直线的方程为:

x = -x1*t;

y = -y1*t;

z = -z1*t;

距离 OA 是 sqrt( (x1-0)^2 + (y1-0)^2 + (z1-0)^2)。已知

距离 OB 是 sqrt( (x2-0)^2 + (y2-0)^2 + (z2-0)^2)。未知

我可以替换为距离OB中的直线方程确定的x、y、z点,结果应该是距离OA的1.2倍。

因此,sqrt( (-x1*t-0)^2 + (-y1*t-0)^2 + (-z1*t-0)^2) = 1.2 * dist(OA)。

我从这里找到 t,求解二次方程,然后通过替换直线方程中的 t 获得点的坐标。

这是正确的吗?

感谢您的宝贵时间。

编辑: 这是我的代码:

rangeRatio = 1.114;

norm = sqrt((P2(1) - P1(1))^2 + (P2(2) - P1(2))^2 + (P2(3) - P1(3))^2);

P3(1) = P1(1) + ((P2(1,1) - P1(1)) /norm) * rangeRatio;
P3(2) = P1(2) + ((P2(1,2) - P1(2)) /norm) * rangeRatio;
P3(3) = P1(3) + ((P2(1,3) - P1(3)) /norm) * rangeRatio;

我也尝试了 norm = 1,我得到的结果略有不同,但仍然不总是共线的。

谢谢

最佳答案

甚至更容易;你可以将 a、b 和 c 乘以 1.2。这给出了一条是原始线大小 1.2 倍的线。

关于line - 在给定距离沿线查找 3D 点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12978065/

相关文章:

c# - 如何从相对方向确定 360° 角?

direction - 如何使用 iPhone UITouch 检测手指移动方向

delphi - 使用自定义样式在 Canvas 上画一条线(delphi)

java - Java 有返回上一行的命令吗?

java - java中距离的国际化

algorithm - 最小化数组中相关项之间的距离

c - 需要移动motion.c中的更新值并改变方向

python - 如何在一行中打印一个 numpy.array?

perl - 将数据重定向到文件时出错

string - 基于预先计算的散列比较字符串距离