We have an equilateral triangle $ABC$ in 3-dimensional space. The points are known, such as:

  • $A = (x_1,y_1,z_1)$
  • $B = (x_2,y_2,z_2)$
  • $C = (x_3,y_3,z_3)$

Point $P$ is on triangle $ABC$.

If I know that $P = (x_4, y_4, ?)$ where $x_4$ and $y_4$ are given, how can I calculate the missing coordinate of that point?


Shift the triangle to the origin by A -> A - A = 0; B -> B - A; C -> C - A.

Points in the plane of the shifted triangle can be expressed with {B - A, C - A} as a basis, in other words you have a linear expression for the translated point P in the form $\alpha$ (B - A) + $\beta$ (C - A).

For the given $x_4$ and $y_4$, translate them in the same way (P -> P - A), solve the two simultaneous equations for $\alpha, \beta$ then compute $z_4$ and translate back to the actual position by P -> P + A.

Further explanation.

The x, y, z axes are a basis for 3D space: they actually represent unit vectors $\hat x = (1, 0, 0)$; $\hat y = (0, 1, 0)$; $\hat z = (0, 0, 1)$. Any point in the 3D space can be represented as a linear combination of these unit vectors. The point A = $(x_1, y_1, z_1) $ for example is equivalent to $ x_1 \hat x + y_1 \hat y + z_1 \hat z$. The x, y, z axes are at right angles to each other, but you can in fact represent a point in 3D space by a combination of any three (non-zero) vectors so long as no two of them point in the same direction.

The triangle ABC lies in a plane, defined by the points A, B, and C. Shifting it to the origin (I moved the point A, but you could move any of the vertices) makes it a proper 2D space which includes the origin, (0, 0). You can represent any point in a 2D space by a combination of any two (non-zero) vectors so long as they don't point in the same direction. The translated points B - A and C - A are two such vectors (so long as the triangle is not degenerate) , so any point in the plane of the translated triangle can be represented as $\alpha$ (B - A) + $\beta$ (C - A).

Translate P (P -> P - A) in the same way so that it is in the plane of the translated triangle, and then for some $\alpha$ and $\beta$, P - A = $\alpha$ (B - A) + $\beta$ (C - A). Expand this out in co-ordinates:

(1) $x_4 - x_1 = \alpha (x_2 - x_1) + \beta(x_3 - x_1)$

(2) $y_4 - y_1 = \alpha (y_2 - y_1) + \beta(y_3 - y_1)$

(3) $z_4 - z_1 = \alpha (z_2 - z_1) + \beta(z_3 - z_1)$

Equations (1) and (2) are two equations in two unknowns $\alpha$ and $\beta$, which you can solve. Then put $\alpha$ and $\beta$ into equation (3) to get $x_4$.

Point to note

You say that you know that P is in the triangle. The process above works for any point in the plane of the triangle, but does nothing to check that P is actually inside the triangle.

  • $\begingroup$ I understand shifting to origin, but I'm getting hung up on $\alpha$ (B - A) + $\beta$ (C - A). Could someone provide a bit more detail or an example on this part? $\endgroup$ – Luke Z May 10 '14 at 0:43
  • $\begingroup$ @Luke Z. See further explanation. $\endgroup$ – Tom Collinge May 10 '14 at 8:41

If you know how to intersect a plane with a 3D extended line, you can: 1) compute the plane of your 3D triangle using "orientation-Location" representation: o = (v2-v1) x (v3-v2) normalized L = v1 • o

2) generate an extended line using the known x-y coordinates of the "inside" point and running parallel to the z axis

3) intersect the line and the plane --> result point [ x y z ]


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.