在wpf中做一些3D内容 - 想要使用更简单的测试来查看一切是否正常(在移动到曲线之前)。
基本问题给出了两点x1,y1,z1和x2,y2,z2我计算了点之间的距离。但是如何找到位于该线上一定距离的另一个点(x3,y3,z3)的坐标?
即。如果我的线在-50,0,0和50,0,0之间是100长,那么沿线100 * 0.1点的坐标是多少?
我认为这是一个简单的公式,但我还没有找到它......
答案 0 :(得分:15)
对于介于0和1之间的每个p,这将在线段上给出一个点:
(x1, y1, z1) + p * ((x2, y2, z2) - (x1, y1, z1))
答案 1 :(得分:7)
这与数学有关,但没关系。让P
和Q
成为两个给定点,X
是您要寻找的点。
P + r(Q - P) = X
r表示一个因素。
如果0 < r < 1
:点x将位于两点之间的线上。
就是这样!
编辑:
从P(p1 / p2 / p3)找到给定距离d处的点:
d² / euclidian_square_distance(P,Q) = r
在上面提到的等式中插入r,你就明白了! :)
P.S:顺便说一下:P-Q = (Px - Qx, Py - Qy, Pz - Qz)
...我敢打赌你知道了:)
答案 2 :(得分:1)
让t
从0变为1.使用以下内容:
(x3, y3, z3) = (1-t)*(x1, y1, z1) + t*(x2, y2, z2)
当t = 0时,你得到第一个点。当t = 1时,你得到第二个。
此方法称为linear interpolation。
答案 3 :(得分:0)
连接3d中的点的线由等式给出:
(x - x1)/(x2 - x1)=(y - y1)/(y2 - y1)=(z-z1)/(z2-z1)
您的值为x1,y1,z1,x2,y2,z2。这将为您提供该线的等式。
另一个等式是
((X-X1)^ 2 +(Y-Y1)^ 2 +(Z-Z1)^ 2)^(1/2)=距离
求解2个方程以得到点的值。