How to convert a point on a tilted 3D plane to a point on a 2D plane?

91 Views Asked by At

I have an infinite plane in 3D that I only know the normal vector of. I also have a point, somewhere on this plane. Based on the normal of the plane, its center point and the coordinates of the point, how do I convert this to a point on a 2D plane?

Example:

The normal vector of the plane is (0, 0.5, 0.5), its center is at (0, 0, 0) and the point is (0, 0.7, -0.7). On a 2D plane, this would mean the point's coordinate is (0, 1) in 2D space. Does anyone know a formula/method for this?

Any help is greatly appreciated!

1

There are 1 best solutions below

2
On

Let $N$ be the unit normal to the plane, and $P_0$ be a point on that plane. To find the $2D$ coordinates you need two mutually orthogonal unit vectors $u_1, u_2$ that also orthogonal to $N$, i.e.

$u_1 \cdot u_2 = 0 , u_1 \cdot N = 0 , u_2 \cdot N = 0 $

With this, we can write any $3D$ point as

$ P = (x, y, z) = P_0 + x_1 u_1 + x_2 u_2 $

Then the coordinates $x_1$ and $x_2$ for the $2D$ representation can found as follows

$ x_1 = (P - P_0) \cdot u_1 $

$ x_2 = (P - P_0) \cdot u_2 $

For example, if $N = \dfrac{1}{\sqrt{2}}(0, 1, 1) $, then you can take,

$u_1 = (1, 0, 0) $

and $ u_2 = N \times u_1 = \dfrac{1}{\sqrt{2} } (0, 1, -1 ) $

If $P_0 = (1, 2, 5) $ and $P = (3, 1, 1) $ then

$ x_1 = (P - P_0) \cdot u_1 = (2, -1, -4) \cdot u_1 = 2 $

$ x_2 = (P - P_0) \cdot u_2 = (2, -1, -4) \cdot u_2 = \dfrac{3}{\sqrt{2}} $