3d在飞机上的正交投影

时间:2011-09-27 07:45:55

标签: math 3d geometry projection

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

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.我怀疑这是对的???

请帮助我。谢谢。

2 个答案:

答案 0 :(得分:2)

最近的点是沿着飞机的法线。因此,定义一个沿着该法线偏离P的点Q.

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)

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

答案 1 :(得分:0)

你在飞机上得到p0 = (0, 0, -d/C)点。我假设法线具有单位长度。

与n在同一方向上的p部分为dot(p-n0, n) * n + p0,因此投影为p - dot(p-p0,n)*n

如果您想在平面上使用某些坐标,则必须提供基础/坐标系。例如,两个线性独立向量跨越平面。坐标取决于这些基础向量。

相关问题