diff --git a/wrap/gl/gl_field.h b/wrap/gl/gl_field.h index 733f2d60..a5fad6e9 100644 --- a/wrap/gl/gl_field.h +++ b/wrap/gl/gl_field.h @@ -5,16 +5,11 @@ class GLField typedef typename MeshType::FaceType FaceType; typedef typename MeshType::VertexType VertexType; typedef typename MeshType::ScalarType ScalarType; - - ///draw the cross field of a given face - static void GLDrawField(MeshType &mesh, - const FaceType &f, + + static void GLDrawField(CoordType dir[4], + CoordType center, ScalarType &size) { - CoordType center=(f.P0(0)+f.P0(1)+f.P0(2))/3; - CoordType normal=f.cN(); - CoordType dir[4]; - vcg::tri::CrossField::CrossVector(f,dir); glLineWidth(1); vcg::Color4b c; vcg::glColor(vcg::Color4b(0,0,0,255)); @@ -28,6 +23,28 @@ class GLField glEnd(); } + ///draw the cross field of a given face + static void GLDrawFaceField(const MeshType &mesh, + const FaceType &f, + ScalarType &size) + { + CoordType center=(f.P0(0)+f.P0(1)+f.P0(2))/3; + CoordType normal=f.cN(); + CoordType dir[4]; + vcg::tri::CrossField::CrossVector(f,dir); + GLDrawField(dir,center,size); + } + + static void GLDrawVertField(const MeshType &mesh, + const VertexType &v, + ScalarType &size) + { + CoordType center=v.cP(); + CoordType normal=v.cN(); + CoordType dir[4]; + vcg::tri::CrossField::CrossVector(v,dir); + GLDrawField(dir,center,size); + } public: @@ -41,12 +58,12 @@ public: MyScalarType size=10; glPointSize(size); glBegin(GL_POINTS); - for (int i=0;i::IsSingular(mymesh.vert[i],mmatch); + bool IsSing=vcg::tri::CrossField::IsSingular(mesh.vert[i],mmatch); if (!IsSing)continue; assert(IsSing); assert(mmatch!=0); @@ -57,24 +74,41 @@ public: else if (mmatch==3)vcg::glColor(vcg::Color4b(0,255,255,255)); - vcg::glVertex(mymesh.vert[i].P()); + vcg::glVertex(mesh.vert[i].P()); } glEnd(); glPopAttrib(); } + static void GLDrawFaceField(const MeshType &mesh) { - srand(12345); glPushAttrib(GL_ALL_ATTRIB_BITS); glEnable(GL_COLOR_MATERIAL); glDisable(GL_LIGHTING); - MyScalarType size=mymesh.bbox.Diag()/100.0; + MyScalarType size=mesh.bbox.Diag()/100.0; vcg::Color4b c=vcg::Color4b(255,0,0,255); - for (int i=0;i