From 70bad7207cc0240d33030ca44f80e6acb438821b Mon Sep 17 00:00:00 2001 From: granzuglia <guido.ranzuglia@isti.cnr.it> Date: Tue, 6 May 2008 13:00:25 +0000 Subject: [PATCH] newest version using plus components --- apps/sample/trimesh_base/trimesh_base.cpp | 67 +++++++++++++++-------- 1 file changed, 44 insertions(+), 23 deletions(-) diff --git a/apps/sample/trimesh_base/trimesh_base.cpp b/apps/sample/trimesh_base/trimesh_base.cpp index 834c5688..4626a8bb 100644 --- a/apps/sample/trimesh_base/trimesh_base.cpp +++ b/apps/sample/trimesh_base/trimesh_base.cpp @@ -1,44 +1,65 @@ -#include <stdio.h> -#include<vcg/simplex/vertex/vertex.h> -#include<vcg/simplex/vertex/with/vn.h> -#include<vcg/simplex/face/with/fn.h> -#include<vcg/simplex/face/with/fcfn.h> +#include<iostream> + #include<vcg/complex/trimesh/base.h> -#include<vcg/complex/trimesh/create/platonic.h> +#include<vcg/simplex/vertexplus/base.h> +#include<vcg/simplex/vertexplus/component.h> +#include<vcg/simplex/faceplus/base.h> +#include<vcg/simplex/faceplus/component.h> #include<vcg/complex/trimesh/update/normal.h> +#include<vcg/complex/trimesh/create/platonic.h> -using namespace vcg; -using namespace std; +#include<vcg/space/color4.h> -class AEdge; // dummy prototype never used class AFace; -class AVertex : public vcg::Vertex< double,AEdge,AFace > {}; -class AFace : public vcg::FaceFCFN< AVertex,AEdge,AFace > {}; -class AMesh : public vcg::tri::TriMesh< std::vector<AVertex>, std::vector<AFace> > {}; +class AVertex; +class AEdge; // dummy prototype never used +class AVertex : public vcg::VertexSimp2< AVertex, AEdge, AFace, vcg::vert::Coord3f>{}; +class AFace : public vcg::FaceSimp2< AVertex, AEdge, AFace, vcg::face::VertexRef,vcg::face::Color4b,vcg::face::Normal3f> {}; + +class AMesh : public vcg::tri::TriMesh< std::vector<AVertex>, std::vector<AFace> > +{ +public: + AMesh() + :vcg::tri::TriMesh< std::vector<AVertex>, std::vector<AFace> >() + { + } +}; -class CEdge; // dummy prototype never used class CFace; -class CVertex : public vcg::VertexVN< double,CEdge,CFace > {}; -class CFace : public vcg::FaceFN< CVertex,CEdge,CFace > {}; -class CMesh : public vcg::tri::TriMesh< std::vector<CVertex>, std::vector<CFace> > {}; +class CVertex; +class CEdge; // dummy prototype never used +class CVertex : public vcg::VertexSimp2< CVertex, CEdge, CFace, vcg::vert::Coord3f,vcg::vert::Normal3f>{}; +class CFace : public vcg::FaceSimp2< CVertex, CEdge, CFace, vcg::face::VertexRef, vcg::face::Normal3f> {}; +class CMesh : public vcg::tri::TriMesh< std::vector<CVertex>, std::vector<CFace> > +{ +public: + CMesh() + :vcg::tri::TriMesh< std::vector<CVertex>, std::vector<CFace> >() + { + } +}; int main(int , char **) { AMesh am; CMesh cm; - tri::Tetrahedron(cm); - tri::Tetrahedron(am); + vcg::tri::Tetrahedron(cm); + vcg::tri::Tetrahedron(am); - printf("Generated mesh has %i vertices and %i triangular faces\n",cm.vn,cm.fn); + std::cout << "Generated mesh has " << cm.vn << " vertices and " << cm.fn << " triangular faces" << std::endl; /// Calculates both vertex and face normals. /// The normal of a vertex v is the weigthed average of the normals of the faces incident on v. /// normals are not normalized - tri::UpdateNormals<CMesh>::PerVertexPerFace(cm); - printf("Normal of face 0 is %f %f %f",cm.face[0].N()[0],cm.face[0].N()[1],cm.face[0].N()[2]); - - tri::UpdateNormals<AMesh>::PerFace(am); + vcg::tri::UpdateNormals<CMesh>::PerVertexPerFace(cm); + std::cout << "[cm mesh] Normal of face 0 is [" << cm.face[0].N()[0] << "," << cm.face[0].N()[1] << "," << cm.face[0].N()[2] << "]" << std::endl; + std::cout << "[cm mesh] Normal of vertex 0 is [" << cm.vert[0].N()[0] << "," << cm.vert[0].N()[1] << "," << cm.vert[0].N()[2] << "]" << std::endl; + /// Calculates face normals. + /// normals are not normalized + vcg::tri::UpdateNormals<AMesh>::PerFace(am); + std::cout << "[am mesh] Normal of face 0 is [" << cm.face[0].N()[0] << "," << cm.face[0].N()[1] << "," << cm.face[0].N()[2] << "]" << std::endl; + return 0; }