Mathematics Stack Exchange is a question and answer site for people studying math at any level and professionals in related fields. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

If I have a triangle with $3$ points $P_1, P_2,$ and $P_3$, each with $x, y,$ and $z$ coordinates, how do I find the surface normal $N$ in $x, y,$ and $z$ such that

$$N_x+N_y+N_z = 1$$

I'm looking for a simple formula that uses values like $x_1$, $x_2$, or $y_3$, and doesn't involve complicated equations or cross products.

share|cite|improve this question
What are Nx,Ny,Nz? – Salech Alhasov Feb 16 '13 at 17:42
@SalechAlhasov x, y, and z coordinates of the surface normal vector. – acer Feb 16 '13 at 17:45
In general the $N$ for each of $x, y$ and $z$ will be different. One thing you could do is write $v = P_1 - P_2$ and $w = P_2 - P_3$ to get two vectors ,then take the cross product $u = v \times w$; then $u\cdot (x, y, z) = d$, where $d = u\cdot P_1 = u\cdot P_2 = u\cdot P_3$ ($P_1, P_2, P_3$ are on the plane.) – snarski Feb 16 '13 at 17:46
@snarski Could you simplify that? – acer Feb 16 '13 at 17:48
Cross products aren't that complicated... – Rahul Feb 16 '13 at 18:27
up vote 12 down vote accepted

The cross product of two sides of the triangle equals the surface normal. So, if $V$ = $P_2$ - $P_1$ and $W$ = $P_3$ - $P_1$, and $N$ is the surface normal, then:

$N_x = (V_y * W_z) - (V_z * W_y)$

$N_y = (V_z * W_x) - (V_x * W_z)$

$N_z = (V_x * W_y) - (V_y * W_x)$

If $A$ is the new vector whose components add up to 1, then:

$A_x = N_x / (|N_x| + |N_y| + |N_z|)$

$A_y = N_y / (|N_x| + |N_y| + |N_z|)$

$A_z = N_z / (|N_x| + |N_y| + |N_z|)$

My sources:

share|cite|improve this answer
What will you do if $N_x+N_y+N_z=0$? – Rahul Feb 17 '13 at 4:18
If $N_x+N_y+N_z=0$ then the condition that their sum equal 1, as the OP asked for, can't be met anyway. – Dan Rust Feb 18 '13 at 15:11
$N_x + N_y + N_z$ can't equal $0$ unless the triangle's points are all the same. – acer Feb 18 '13 at 17:08
Oh really? What about the triangle whose vertices are $(0,0,0)$, $(1,1,0)$, and $(0,0,1)$? – Rahul Feb 19 '13 at 5:35
@ℝⁿ. That's another exception, but I won't be using those triangles anyway. – acer Feb 19 '13 at 23:17

Let $P_1=(x_1,y_1,z_1)$, $P_2=(x_2,y_2,z_2)$ and $P_3=(x_3,y_3,z_3)$. The normal vector to the triangle with these three points as its vertices is then given by the cross product $n=(P_2-P_1)\times (P_3-P_1)$. In matrix form, we then see that $$n=\det\left(\left[\begin{matrix}i&j&k\\ x_2-x_1&y_2-y_1&z_2-z_1\\ x_3-x_1&y_3-y_1&z_3-z_1 \end{matrix}\right]\right)$$

$$=\left(\begin{matrix}(y_2-y_1)(z_3-z_1)-(y_3-y_1)(z_2-z_1)\\ (z_2-z_1)(x_3-x_1)-(x_2-x_1)(z_3-z_1)\\ (x_2-x_1)(y_3-y_1)-(x_3-x_1)(y_2-y_1) \end{matrix}\right)$$

If you need that the sum of the coefficients of $\hat{n}$ equals 1, then set $\alpha$ equal to the sum of the coefficients of $n$ and then let $\hat{n}=\frac{1}{\alpha}n$. Obviously, if $\alpha=0$ then you will never be able to satisfy your condition as any scalar multiple of $n$ will have the same zero-sum of coefficients.

share|cite|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

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