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;
 }