public void DrawFaceTriangleNormals( Face f )
{
Mesh mesh = f.Triangulate();
int n = mesh.NumTriangles;
string s = "{0} face triangulation returns "
+ "mesh triangle{1} and normal vector{1}:";
Debug.Print(
s, n, Util.PluralSuffix( n ) );
for( int i = 0; i < n; ++i )
{
MeshTriangle t = mesh.get_Triangle( i );
XYZ p = ( t.get_Vertex( 0 )
+ t.get_Vertex( 1 )
+ t.get_Vertex( 2 ) ) / 3;
XYZ v = t.get_Vertex( 1 )
- t.get_Vertex( 0 );
XYZ w = t.get_Vertex( 2 )
- t.get_Vertex( 0 );
XYZ normal = v.CrossProduct( w ).Normalize();
Debug.Print(
"{0} {1} --> {2}", i,
Util.PointString( p ),
Util.PointString( normal ) );
CreateModelLine( _doc, p, p + normal );
}
}