【问题标题】:3d orthogonal projection on a plane平面上的 3d 正交投影
【发布时间】:2011-11-25 19:35:23
【问题描述】:

我在 3d P(x,y,z) 和视平面 Ax+By+Cz+d=0 中有一个点。平面中的一个点是 E。现在我想将该 3d 点投影到该平面并获得投影点相对于 E 点的 2d 坐标。

P(x,y,z) = 3d point which i want to project on the plane.
Plane Ax + By + Cz  + d  = 0 , so normal n = (A,B,C)
E(ex,ey,ez) = A point in plane ( eye pos of camera )

我现在正在做的是从点 P 获得平面上最近的点。然后我将该点减去 E。我怀疑这是正确的???

请帮助我。谢谢。

【问题讨论】:

    标签: math 3d geometry projection


    【解决方案1】:

    最近的点沿着平面的法线。因此,定义一个点 Q,该点沿该法线从 P 偏移。

    Q = P - n*t
    

    然后求解将 Q 放入平面的 t:

    dot(Q,n) + d = 0
    dot(P-n*t,n) + d = 0
    dot(P,n) - t*dot(n,n) = -d
    t = (dot(P,n)+d)/dot(n,n)
    

    其中点((x1,y1,z1),(x2,y2,z2)) = x1*x2 + y1*y2 + z1*z2

    【讨论】:

    • 感谢 Vaughn,好的,现在我得到了最近的点,但我想将该点相对于 E 进行平移(所以,现在 E 是原点)。我从 E 中减去最近的点坐标。是否正确???如果您无法正确回答我的问题,请告诉我??
    • 在您的问题中,您表示需要 2D 坐标。这将需要在平面上建立二维坐标系。你说 E 应该是原点,但是坐标轴呢?
    • 实际上我想将原点移动到 E 并使该平面成为新的 XY 平面,以便 E 和新点具有相同的 Z。可能是我遗漏了什么?以及如何创建二维坐标系统???
    • 您必须定义位于平面内的 X 轴和 Y 轴。您可以任意选择一个轴并选择其他轴,使其与第一个轴垂直。
    【解决方案2】:

    您在平面上得到一个点为p0 = (0, 0, -d/C)。我假设法线有单位长度。

    p与n同向的部分为dot(p-n0, n) * n + p0,所以投影为p - dot(p-p0,n)*n

    如果你想要一些平面上的坐标,你必须提供一个基础/坐标系。例如,跨越平面的两个线性独立向量。坐标取决于这些基向量。

    【讨论】:

      猜你喜欢
      • 2015-03-07
      • 2017-10-06
      • 1970-01-01
      • 1970-01-01
      • 2017-10-04
      • 2014-06-09
      • 1970-01-01
      • 1970-01-01
      • 2018-03-21
      相关资源
      最近更新 更多