Math 平面上的三维正交投影

Math 平面上的三维正交投影,math,3d,geometry,projection,Math,3d,Geometry,Projection,我有一个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 ) 我现在做

我有一个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。我怀疑这是对的


请帮帮我。谢谢。

最近的点是沿着飞机的法线方向。因此,定义一个点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

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

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


如果需要平面上的某些坐标,则必须提供基准/坐标系。两个横跨平面的线性独立向量。坐标取决于这些基向量。

谢谢沃恩,好的,现在我得到了最近的点,但我想相对于E平移该点(因此,现在E是原点)。我从E中减去最近的点坐标。正确吗???如果你不能正确回答我的问题,请告诉我??在你的问题中,你表示需要二维坐标。这需要在平面上建立二维坐标系。你说E应该是原点,但是轴呢?实际上我想把原点移到E,使那个平面成为新的XY平面,这样E和新的点都有相同的Z。我可能遗漏了什么吗??还有如何创建二维坐标系???你必须定义一个位于平面内的X轴和Y轴。可以任意拾取一个轴,然后拾取其他轴,使其与第一个轴垂直。