【问题标题】:Finding coordinates of a point between two points?查找两点之间的点的坐标?
【发布时间】:2018-02-28 21:40:56
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: wpf math linear-algebra


    【解决方案1】:

    对于介于 0 和 1 之间的每个 p,这将在线段上给出一个点:

    (x1, y1, z1) + p * ((x2, y2, z2) - (x1, y1, z1))
    

    【讨论】:

    • +1。在示例中,提问者给出的只是让 p=0.1 并且翻译得很好。保持简单的好工作。
    • 这也很有用!因此,为了解决我所做的每一个问题:x3 = x1 + p(x2-x1)。重复 y 和 z。
    【解决方案2】:

    这与数学有关,但没关系。让PQ 成为两个给定点,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)...我敢打赌你已经知道了 :)

    【讨论】:

    • @Simon 等式不应该是 X = P + r(Q-P),到目前为止,当 r = 1 时,我们得到 2P-Q,这是不正确的。
    【解决方案3】:

    t 在 0 到 1 之间变化。使用以下内容:

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

    当 t=0 时,你得到第一个点。当 t=1 时,您将获得第二个。

    这个方法叫做linear interpolation

    【讨论】:

    • 你能用你的答案描述如何找到中间坐标点吗?
    【解决方案4】:

    连接 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)=距离

    解两个方程得到点的值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-27
      • 1970-01-01
      • 2014-01-16
      • 2016-05-10
      • 2021-08-04
      • 1970-01-01
      • 2011-05-09
      • 2017-01-05
      相关资源
      最近更新 更多