## Facet Normals

A surface normal, is a vector that is perpendicular to that surface. When applied to computer graphics, and in particular when it is applied to meshes composed of polygons, it is often called a facet normal. In other words, consider a mesh composed of triangles. The facet normal is that vector which is perpendicular to each triangle. It is often simplified to normal, for the purposes of abbreviation.

A normal can be calculated as the vector cross product of two edges of the triangle (or polygon), as long as those edges are not parallel.

1. int main(int argc, char **argv) 2. { 3. Cvector3 *vertex, *face_normal, a, b; 4. : 5. : 6. // 7. // Step 1. Loop thru faces; calculate face normals 8. // 9. for(i=0;i<number_of_triangles;i++) { 10. index1 = face[3*i+0]; 11. index2 = face[3*i+1]; 12. index3 = face[3*i+2]; 13. a = vertex[index2] - vertex[index3]; 14. b = vertex[index1] - vertex[index3]; 15. face_normal.Cross(a,b); 16. } 17. : 18. : 19. return 0; 20. }