繁体   English   中英

3d在飞机上的正交投影

[英]3d orthogonal projection on a plane

我有一个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.获得最近的平面点。然后我减去那个点,EI怀疑这是正确的???

请帮帮我。谢谢。

最近的点是沿着平面的法线。 因此,定义一个沿着该法线偏离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

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

与n相同方向的p部分是dot(p-n0, n) * n + p0 ,因此投影是p - dot(p-p0,n)*n

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM