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

Hi I have the following co-ordinates, which make up my triangle based pyramid. I need to calculate the normals of each face. However Im struggling to find the best simplest way to do this?

-0.5, 0, 0.5,
 0, 0, -0.5,
0.5, 0, 0.5,

0, 0, -0.5,
0.5, 0, 0.5,
0, 1, 0,

-0.5, 0, 0.5,
0, 0, -0.5,
0, 1, 0,

0.5, 0, 0.5,
-0.5, 0, 0.5,
0, 1, 0

enter image description here

share|cite|improve this question
What is the norm of a face? Do you mean its area? – enzotib Aug 13 '12 at 10:40
No I meant the normal. Ive added a picture to clarify. I believe the technical term is: a line from the origin, which is perpendicular to the face it passes through. – geminiCoder Aug 13 '12 at 10:50
@geminiCoder If you're making models that you intend to use in a Direct3D engine, using Maya / 3DS Max and then exporting the model to .obj file format can save you time. It automatically calculates the norms (lines that begin with vn. The norm of a plane $ax+by+cz+d=0$ is $(a,b,c)$. You may normalize it. Also, the cross product of two non-parallel vectors in the plane is perpendicular to the plane, like @enzotib 's answer. – Frenzy Li Aug 13 '12 at 11:30
Look up Newell's algorithm. – J. M. Aug 13 '12 at 11:34
up vote 1 down vote accepted

Given three non aligned point of a face, say $A, B, C$, build the vectors $$ \mathbf{u}=B-A,\\ \mathbf{v}=C-A. $$ The vector $\mathbf{n}=\mathbf{u}\times\mathbf{v}$ is normal to the given face, you should only normalize its length.

Take $$ A=(-1/2, 0, 1/2),\\ B=(0, 0, -1/2),\\ C=(1/2, 0, 1/2), $$ then build $$ \mathbf{u}=B-A=( 0, 0, -1/2)-(-1/2, 0, 1/2)=(1/2,0,-1),\\ \mathbf{v}=C-A=(1/2, 0, 1/2)-(-1/2, 0, 1/2)=(1,0,0). $$ and $$ \mathbf{n}=\mathbf{u}\times\mathbf{v}=\left| \begin{matrix} i &j &k\\ 1/2 &0 &-1\\ 1 &0 &0 \end{matrix} \right|=(0,-1,0) $$ The resulting vector is, in this particular case, already normalized.

share|cite|improve this answer
I know its a bit cheeky, but could you give me and example using the co-ordinates above. I would be most grateful! – geminiCoder Aug 13 '12 at 11:48
Thanks thats fantastic. I appreciate your time – geminiCoder Aug 13 '12 at 13:51
For consistency, one would want to ensure that the vertices of the polygons are all "clockwise" or "anticlockwise" before computing the normals, lest one obtain a result where some of the normals are pointing "outside" the pyramid, and the others are pointing "inside". – J. M. Aug 14 '12 at 4:44

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.