Take the 2-minute tour ×
Mathematics Stack Exchange is a question and answer site for people studying math at any level and professionals in related fields. It's 100% free, no registration required.

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|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
1  
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
2  
Cross products aren't that complicated... –  Rahul Feb 16 '13 at 18:27

2 Answers 2

up vote 8 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:
http://freespace.virgin.net/hugo.elias/routines/r_cross.htm
http://en.wikipedia.org/wiki/Normal_(geometry)

share|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. –  Daniel 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|improve this answer

Your Answer

 
discard

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.