9

在 wpf 中做一些 3D 的东西 - 想要使用更简单的测试来查看一切是否正常(在移动到曲线之前)。

基本问题给出了两个点 x1,y1,z1 和 x2,y2,z2 我计算了点之间的距离。但是如何找到位于该线上某个距离的另一个点 (x3,y3,z3) 的坐标呢?

即,如果我的线在 -50,0,0 和 50,0,0 之间有 100 长,那么沿线 100 * 0.1 处的点的坐标是什么?

我认为这是一个简单的公式,但我还没有找到它......

4

4 回答 4

15

对于介于 0 和 1 之间的每个 p,这将为您在线段上提供一个点:

(x1, y1, z1) + p * ((x2, y2, z2) - (x1, y1, z1))
于 2010-05-21T22:57:13.300 回答
7

这与数学有关,但没关系。让PQ成为两个给定X的点和你正在寻找的点。

P + r(Q - P) = X

r 表示一个因子。

if 0 < r < 1:点 x 将在两点之间的线上。

就是这样!

编辑:

要在距 P(p1/p2/p3) 的给定距离 d 处找到一个点:

d² / euclidian_square_distance(P,Q) = r

在上面提到的等式中插入 r,你就会明白你的意思!:)

PS:顺便说一句:P-Q = (Px - Qx, Py - Qy, Pz - Qz)......我敢打赌你已经知道了:)

于 2010-05-21T22:55:45.507 回答
1

t从 0 到 1 不等。使用以下内容:

(x3, y3, z3) = (1-t)*(x1, y1, z1) + t*(x2, y2, z2)

当 t=0 你得到第一点。当 t=1 你得到第二个。

这种方法称为线性插值

于 2010-05-21T22:59:50.673 回答
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 个方程以获得点的值。

于 2010-05-21T23:05:49.090 回答