在wpf中做一些3D东西 - 想要使用更简单的测试来查看一切是否正常(在移动到曲线之前)。
基本问题给出了两个点x1,y1,z1和x2,y2,z2我已经计算了点之间的距离。但是如何在某个距离找到位于该线上的另一个点(x3,y3,z3)的坐标?
即如果我的线在-50,0,0和50,0,0之间是100长,那么沿线100 * 0.1点的坐标是多少?
我认为这是一个简单的公式,但我还没有找到它......
对于介于0和1之间的每个p,这将在线段上给出一个点:
(x1, y1, z1) + p * ((x2, y2, z2) - (x1, y1, z1))
这与数学有关,但没关系。让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:顺便说一句:qazxsw poi ...我打赌你已经知道了:)
让P-Q = (Px - Qx, Py - Qy, Pz - Qz)
从0到1不等。使用以下内容:
t
当t = 0时,你得到第一个点。当t = 1时,你得到第二个。
这种方法叫做(x3, y3, z3) = (1-t)*(x1, y1, z1) + t*(x2, y2, z2)
。
连接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个方程以得到点的值。