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!
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}} $