add vcglib
This commit is contained in:
1 parent
6f6c0c8eb7
commit
af8100f851
1537 files changed
+634197
No files matched your search
@@ -0,0 +1,109 @@
|
||||
/****************************************************************************
|
||||
* MeshLab o o *
|
||||
* An extendible mesh processor o o *
|
||||
* _ O _ *
|
||||
* Copyright(C) 2005, 2009 \/)\/ *
|
||||
* Visual Computing Lab /\/| *
|
||||
* ISTI - Italian National Research Council | *
|
||||
* \ *
|
||||
* All rights reserved. *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License (http://www.gnu.org/licenses/gpl.txt) *
|
||||
* for more details. *
|
||||
* *
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __VCGLIB_IMPORTERTS
|
||||
#define __VCGLIB_IMPORTERTS
|
||||
#define NULL 0
|
||||
#include <vcg/space/point3.h>
|
||||
#include <vcg/space/point4.h>
|
||||
|
||||
namespace vcg {
|
||||
namespace tetra {
|
||||
namespace io {
|
||||
|
||||
template <typename MESHTYPE>
|
||||
class ImporterTS{
|
||||
typedef MESHTYPE Tetramesh;
|
||||
typedef typename Tetramesh::VertexPointer VertexPointer;
|
||||
typedef typename Tetramesh::VertexType VertexType;
|
||||
typedef typename Tetramesh::TetraType FaceType;
|
||||
typedef typename Tetramesh::VertexIterator VertexIterator;
|
||||
typedef typename Tetramesh::TetraIterator FaceIterator;
|
||||
typedef typename Tetramesh::ScalarType ScalarType;
|
||||
typedef Point3<ScalarType> Point3x;
|
||||
|
||||
static FILE *& F(){static FILE * f; return f;}
|
||||
|
||||
inline static void ReadPos( Point3<double> &p){
|
||||
fscanf(F(),"%lg %lg %lg",&p[0],&p[1],&p[2]);
|
||||
}
|
||||
inline static void ReadPos( Point3<float> &p){
|
||||
fscanf(F(),"%f %f %f",&p[0],&p[1],&p[2]);
|
||||
}
|
||||
inline static void ReadPos( Point4<ScalarType> &p){
|
||||
fscanf(F(),"%g %g %g %g",&p[0],&p[1],&p[2],&p[3]);
|
||||
}
|
||||
public:
|
||||
static int Open( Tetramesh & m, const char * filename )
|
||||
{
|
||||
int nvertex;
|
||||
int ntetra;
|
||||
int tp0;
|
||||
int tp1;
|
||||
int tp2;
|
||||
int tp3;
|
||||
typename Tetramesh::VertexType p1;
|
||||
F() = fopen(filename,"r");
|
||||
if(F() == NULL )
|
||||
{
|
||||
printf( "The file was not opened\n" );
|
||||
return -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
fscanf(F(), "%i", &nvertex );
|
||||
fscanf(F(), "%i", &ntetra );
|
||||
m.tetra.reserve(ntetra);
|
||||
m.vert.reserve(nvertex);
|
||||
int j;
|
||||
for (j=0;j<nvertex;j++)
|
||||
{
|
||||
m.vert.push_back(VertexType());
|
||||
ReadPos(m.vert.back().P());
|
||||
m.vert.back().ClearFlags();
|
||||
}
|
||||
for (j=0;j<ntetra;j++)
|
||||
{
|
||||
fscanf(F(), "%i", &tp0 );
|
||||
fscanf(F(), "%i", &tp1 );
|
||||
fscanf(F(), "%i", &tp2 );
|
||||
fscanf(F(), "%i", &tp3 );
|
||||
|
||||
m.tetra.push_back(typename Tetramesh::TetraType());
|
||||
m.tetra.back().V(0) = &m.vert[tp0];
|
||||
m.tetra.back().V(1) = &m.vert[tp1];
|
||||
m.tetra.back().V(2) = &m.vert[tp2];
|
||||
m.tetra.back().V(3) = &m.vert[tp3];
|
||||
m.tetra.back().Flags() = 0;
|
||||
}
|
||||
}
|
||||
m.vn = nvertex;
|
||||
m.tn = ntetra;
|
||||
|
||||
return 0;
|
||||
}
|
||||
};// end class
|
||||
}// end of io
|
||||
}// end of tetra
|
||||
}// end of vcg
|
||||
#endif
|
||||
Reference in new issue
Block a user