minor changes to comply gcc compiler (typename's )
This commit is contained in:
parent
c3227ae7a0
commit
cf20e1d0c1
|
@ -31,12 +31,12 @@
|
|||
#include<vcg\complex\local_optimization.h>
|
||||
|
||||
struct FAIL{
|
||||
static VOL(){static int vol=0; return vol++;}
|
||||
static LKF(){static int lkf=0; return lkf++;}
|
||||
static LKE(){static int lke=0; return lke++;}
|
||||
static LKV(){static int lkv=0; return lkv++;}
|
||||
static OFD(){static int ofd=0; return ofd++;}
|
||||
static BOR(){static int bor=0; return bor++;}
|
||||
static int VOL(){static int vol=0; return vol++;}
|
||||
static int LKF(){static int lkf=0; return lkf++;}
|
||||
static int LKE(){static int lke=0; return lke++;}
|
||||
static int LKV(){static int lkv=0; return lkv++;}
|
||||
static int OFD(){static int ofd=0; return ofd++;}
|
||||
static int BOR(){static int bor=0; return bor++;}
|
||||
|
||||
};
|
||||
|
||||
|
@ -55,15 +55,15 @@ class TetraEdgeCollapse: public LocalOptimization<TETRA_MESH_TYPE>::LocModType
|
|||
{
|
||||
|
||||
/// The tetrahedral mesh type
|
||||
typedef typename TETRA_MESH_TYPE TetraMeshType;
|
||||
//typedef typename TETRA_MESH_TYPE TETRA_MESH_TYPE;
|
||||
/// The tetrahedron type
|
||||
typedef typename TetraMeshType::TetraType TetraType;
|
||||
/// The vertex type
|
||||
typedef typename TetraType::VertexType VertexType;
|
||||
typedef typename TETRA_MESH_TYPE::TetraType TetraType;
|
||||
/// The vertex type
|
||||
typedef typename TetraType::VertexType VertexType;
|
||||
/// The coordinate type
|
||||
typedef typename TetraType::VertexType::CoordType CoordType;
|
||||
typedef typename TetraType::VertexType::CoordType CoordType;
|
||||
/// The scalar type
|
||||
typedef typename TetraMeshType::VertexType::ScalarType ScalarType;
|
||||
typedef typename TETRA_MESH_TYPE::VertexType::ScalarType ScalarType;
|
||||
/////the base type class
|
||||
//typedef typename vcg::tri::LocalModification LocalMod;
|
||||
/// The HEdgePos type
|
||||
|
@ -77,7 +77,7 @@ private:
|
|||
///the new point that substitute the edge
|
||||
Point3<ScalarType> _NewPoint;
|
||||
///the pointer to edge collapser method
|
||||
vcg::tetra::EdgeCollapse<TetraMeshType> _EC;
|
||||
vcg::tetra::EdgeCollapse<TETRA_MESH_TYPE> _EC;
|
||||
///mark for up_dating
|
||||
static int& _Imark(){ static int im=0; return im;}
|
||||
///the pos of collapse
|
||||
|
@ -96,7 +96,7 @@ public:
|
|||
TetraEdgeCollapse(PosType p,int mark)
|
||||
{
|
||||
_Imark() = mark;
|
||||
pos=p;
|
||||
pos=p;
|
||||
_priority = _AspectRatioMedia(p);
|
||||
}
|
||||
|
||||
|
@ -129,7 +129,6 @@ ScalarType _VolumePreservingError(PosType &pos,CoordType &new_point,int nsteps)
|
|||
{
|
||||
VertexType *ve0=(pos.T()->V(Tetra::VofE(pos.E(),0)));
|
||||
VertexType *ve1=(pos.T()->V(Tetra::VofE(pos.E(),1)));
|
||||
vrem =ve0;
|
||||
bool ext_v0=ve0->IsB();
|
||||
bool ext_v1=ve1->IsB();
|
||||
|
||||
|
@ -168,10 +167,9 @@ ScalarType _VolumePreservingError(PosType &pos,CoordType &new_point,int nsteps)
|
|||
|
||||
public:
|
||||
|
||||
|
||||
virtual const char *Info(TetraMeshType &m) {
|
||||
virtual const char *Info(TETRA_MESH_TYPE &m) {
|
||||
static char buf[60];
|
||||
sprintf(buf,"collapse %i -> %i %f\n", pos.V()-&m.vert[0], pos.VFlip()-&m.vert[0],_priority);
|
||||
//sprintf(buf,"collapse %i -> %i %f\n", pos.()-&m.vert[0], pos.VFlip()-&m.vert[0],_priority);
|
||||
return buf;
|
||||
}
|
||||
|
||||
|
@ -182,52 +180,59 @@ public:
|
|||
|
||||
ScalarType ComputeError()
|
||||
{
|
||||
_EC.FindSets(pos);
|
||||
vrem=(pos.T()->V(Tetra::VofE(pos.E(),0)));
|
||||
return (_VolumePreservingError(pos,_NewPoint,5));// magic number....parametrize!
|
||||
}
|
||||
|
||||
int Execute()
|
||||
void Execute(TETRA_MESH_TYPE &tm)
|
||||
{
|
||||
_EC.FindSets(pos);
|
||||
return -_EC.DoCollapse(pos,_NewPoint);
|
||||
// _EC.FindSets(pos);
|
||||
assert(!vrem->IsD());
|
||||
int del=_EC.DoCollapse(pos,_NewPoint);
|
||||
tm.tn-=del;
|
||||
tm.vn-=1;
|
||||
}
|
||||
|
||||
|
||||
void UpdateHeap(typename LocalOptimization<TetraMeshType>::HeapType & h_ret)
|
||||
void UpdateHeap(typename LocalOptimization<TETRA_MESH_TYPE>::HeapType & h_ret)
|
||||
{
|
||||
assert(!vrem->IsD());
|
||||
_Imark()++;
|
||||
VTIterator<FaceType> VTi(vrem->VTb(),vrem->VTi());
|
||||
VTIterator<TetraType> VTi(vrem->VTb(),vrem->VTi());
|
||||
while (!VTi.End())
|
||||
{
|
||||
VTi.Vt()->ComputeVolume();
|
||||
|
||||
VTi.Vt()->ComputeVolume();
|
||||
for (int j=0;j<6;j++)
|
||||
{
|
||||
vcg::tri::Pos<FaceType> p=Pos<FaceType>(VTi.Vt(),Tetra::FofE(j,0),j,Tetra::VofE(j,0));
|
||||
h_ret.push_back(HeapElem(new TriEdgeCollapser<TriMeshType>(p,_Imark())));
|
||||
std::push_heap(h_ret.begin(),h_ret.end());
|
||||
// update the mark of the vertices
|
||||
VTi.Vt()->V(Tetra::VofE(j,0))->IMark() = _Imark();
|
||||
vcg::tetra::Pos<TetraType> p=Pos<TetraType>(VTi.Vt(),Tetra::FofE(j,0),j,Tetra::VofE(j,0));
|
||||
assert(!p.T()->V(p.V())->IsD());
|
||||
assert(!p.T()->IsD());
|
||||
h_ret.push_back(HeapElem(new TetraEdgeCollapse<TETRA_MESH_TYPE>(p,_Imark())));
|
||||
std::push_heap(h_ret.begin(),h_ret.end());
|
||||
// update the mark of the vertices
|
||||
VTi.Vt()->V(Tetra::VofE(j,0))->IMark() = _Imark();
|
||||
}
|
||||
VTi++;
|
||||
++VTi;
|
||||
}
|
||||
}
|
||||
|
||||
ModifierType IsOfType(){ return TetraEdgeCollapser;}
|
||||
/// return the type of operation
|
||||
|
||||
ModifierType IsOfType(){ return TetraEdgeCollapseOp;}
|
||||
|
||||
bool IsFeasible(){
|
||||
vcg::tri::EdgeCollapse<TriMeshType>::Reset();
|
||||
_EC.FindSets(pos);
|
||||
return(_EC.CheckPreconditions(pos,_NewPoint));
|
||||
}
|
||||
vcg::tetra::EdgeCollapse<TETRA_MESH_TYPE>::Reset();
|
||||
_EC.FindSets(pos);
|
||||
ComputeError();
|
||||
return(_EC.CheckPreconditions(pos,_NewPoint));
|
||||
}
|
||||
|
||||
bool IsUpToDate(){
|
||||
if (!pos.T()->IsD())
|
||||
{
|
||||
{
|
||||
VertexType *v0=pos.T()->V(Tetra::VofE(pos.E(),0));
|
||||
VertexType *v1=pos.T()->V(Tetra::VofE(pos.E(),1));
|
||||
|
||||
VertexType *v1=pos.T()->V(Tetra::VofE(pos.E(),1));
|
||||
assert(!v0->IsD());
|
||||
assert(!v1->IsD());
|
||||
if(! (( (!v0->IsD()) && (!v1->IsD())) &&
|
||||
_Imark()>=v0->IMark() &&
|
||||
_Imark()>=v1->IMark()))
|
||||
|
@ -242,13 +247,14 @@ public:
|
|||
return false;
|
||||
}
|
||||
|
||||
virtual ScalarType Priority(){
|
||||
virtual ScalarType Priority() const {
|
||||
return _priority;
|
||||
}
|
||||
|
||||
virtual void Init(TetraMeshType &m,typename LocalOptimization<TetraMeshType>::HeapType& h_ret){
|
||||
/// perform initialization
|
||||
static void Init(TETRA_MESH_TYPE &m,typename LocalOptimization<TETRA_MESH_TYPE>::HeapType& h_ret){
|
||||
h_ret.clear();
|
||||
TetraMeshType::TetraIterator ti;
|
||||
typename TETRA_MESH_TYPE::TetraIterator ti;
|
||||
int j;
|
||||
for(ti = m.tetra.begin(); ti != m.tetra.end();++ti)
|
||||
if(!(*ti).IsD()){
|
||||
|
@ -256,7 +262,9 @@ public:
|
|||
for (int j=0;j<6;j++)
|
||||
{
|
||||
PosType p=PosType(&*ti,Tetra::FofE(j,0),j,Tetra::VofE(j,0));
|
||||
h_ret.push_back(HeapElem(new TriEdgeCollapser<TetraMeshType>(p,m.IMark)));
|
||||
assert(!p.T()->V(p.V())->IsD());
|
||||
assert(!p.T()->IsD());
|
||||
h_ret.push_back(HeapElem(new TetraEdgeCollapse<TETRA_MESH_TYPE>(p,m.IMark)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -44,17 +44,17 @@ class EdgeCollapse
|
|||
{
|
||||
public:
|
||||
/// The tetrahedral mesh type
|
||||
typedef typename TETRA_MESH_TYPE TetraMeshType;
|
||||
typedef TETRA_MESH_TYPE TetraMeshType;
|
||||
/// The tetrahedron type
|
||||
typedef typename TetraMeshType::TetraType TetraType;
|
||||
/// The vertex type
|
||||
typedef typename TetraType::VertexType VertexType;
|
||||
/// The vertex type
|
||||
typedef typename TetraType::VertexType VertexType;
|
||||
/// The vertex iterator type
|
||||
typedef typename TetraMeshType::VertexIterator VertexIterator;
|
||||
/// The tetra iterator type
|
||||
typedef typename TetraMeshType::TetraIterator TetraIterator;
|
||||
/// The coordinate type
|
||||
typedef typename TetraType::VertexType::CoordType CoordType;
|
||||
typedef typename TetraType::VertexType::CoordType CoordType;
|
||||
/// The scalar type
|
||||
typedef typename TetraMeshType::VertexType::ScalarType ScalarType;
|
||||
///the container of tetrahedron type
|
||||
|
@ -66,9 +66,9 @@ class EdgeCollapse
|
|||
/// The HEdgePos Loop type
|
||||
typedef PosLoop<TetraType> PosLType;
|
||||
/// The topology updater type
|
||||
typedef vcg::tetra::UpdateTetraTopology<VertexContainer,TetraContainer> Topology;
|
||||
typedef typename vcg::tetra::UpdateTetraTopology<VertexContainer,TetraContainer> Topology;
|
||||
///the normal updater type
|
||||
typedef vcg::tetra::UpdateNormals<TetraMeshType> UpdateNormals;
|
||||
typedef typename vcg::tetra::UpdateNormals<TetraMeshType> UpdateNormals;
|
||||
|
||||
|
||||
/// Default Constructor
|
||||
|
@ -81,6 +81,7 @@ class EdgeCollapse
|
|||
};
|
||||
|
||||
private:
|
||||
|
||||
typedef pair <int,int> FacePair;
|
||||
struct Face
|
||||
{
|
||||
|
@ -277,7 +278,7 @@ static int _Collapse(PosType p,CoordType NewP)
|
|||
//now I cycle on the tetrahedron that had the old vertex
|
||||
//reassegning the new one.
|
||||
|
||||
VTIterator< TetraType> VTi(Vdel->VTb(),Vdel->VTi());
|
||||
VTIterator<TetraType> VTi(Vdel->VTb(),Vdel->VTi());
|
||||
while (!VTi.End())
|
||||
{
|
||||
TetraType *T_Change=VTi.Vt();
|
||||
|
@ -307,7 +308,7 @@ static int _Collapse(PosType p,CoordType NewP)
|
|||
|
||||
static void orMarkE(Edge E,char M)
|
||||
{
|
||||
map<Edge,char>::iterator EI;
|
||||
typename map<Edge,char>::iterator EI;
|
||||
EI=_EdgeMark().find(E);
|
||||
if (EI==_EdgeMark().end())
|
||||
_EdgeMark().insert (pair<Edge,char>(E,M));
|
||||
|
@ -317,7 +318,7 @@ static void orMarkE(Edge E,char M)
|
|||
|
||||
static bool isMarkedE(Edge E,char M)
|
||||
{
|
||||
map<Edge,char>::iterator EI;
|
||||
typename map<Edge,char>::iterator EI;
|
||||
EI=_EdgeMark().find(E);
|
||||
if (EI==_EdgeMark().end())
|
||||
return false;
|
||||
|
@ -326,7 +327,7 @@ static bool isMarkedE(Edge E,char M)
|
|||
|
||||
static void orMarkF(Face F,char M)
|
||||
{
|
||||
map<Face,char>::iterator FI;
|
||||
typename map< Face,char>::iterator FI;
|
||||
FI=_FaceMark().find(F);
|
||||
if (FI==_FaceMark().end())
|
||||
_FaceMark().insert (pair<Face,char>(F,M));
|
||||
|
@ -336,7 +337,7 @@ static void orMarkF(Face F,char M)
|
|||
|
||||
static bool isMarkedF(Face F,char M)
|
||||
{
|
||||
map<Face,char>::iterator FI;
|
||||
typename map<Face,char>::iterator FI;
|
||||
FI=_FaceMark().find(F);
|
||||
if (FI==_FaceMark().end())
|
||||
return false;
|
||||
|
@ -740,7 +741,7 @@ static bool _FlipCondition(PosType pos,CoordType NewP)
|
|||
static void _InitTetrahedronValues(VertexType* v)
|
||||
{
|
||||
|
||||
VTIterator<TetraType> VTi=VTIterator<TetraType>(v->VTb(),v->VTi());
|
||||
VTIterator<TetraType> VTi= VTIterator<TetraType>(v->VTb(),v->VTi());
|
||||
while (!VTi.End())
|
||||
{
|
||||
if (TetraType::HasTetraQuality())
|
||||
|
@ -753,7 +754,7 @@ static void _InitTetrahedronValues(VertexType* v)
|
|||
VTi.Vt()->ComputeNormal();
|
||||
}
|
||||
|
||||
VTi++;
|
||||
++VTi;
|
||||
}
|
||||
|
||||
VTi.Vt()=v->VTb();
|
||||
|
@ -787,7 +788,8 @@ static void Reset(){
|
|||
///that share the adge to collapse
|
||||
static ScalarType AspectRatioCollapsed(PosType p)
|
||||
{
|
||||
PosL pos=PosL(p.T(),p.F(),p.E(),p.V());
|
||||
//PosL pos=PosL(p.T(),p.F(),p.E(),p.V());
|
||||
PosLoop<TetraType> pos=PosLoop<TetraType>(p.T(),p.F(),p.E(),p.V());
|
||||
pos.Reset();
|
||||
int num=0;
|
||||
ScalarType ratio_media=0.f;
|
||||
|
@ -805,8 +807,8 @@ static ScalarType AspectRatioCollapsed(PosType p)
|
|||
///check the topologycal preserving conditions for the collapse indicated by pos
|
||||
static bool CheckPreconditions(PosType pos,CoordType NewP)
|
||||
{
|
||||
VertexType *v0=pos.T()->V(Tetra::VofE(pos.E(),0));
|
||||
VertexType *v1=pos.T()->V(Tetra::VofE(pos.E(),1));
|
||||
VertexType *v0=pos.T()->V(Tetra::VofE(pos.E(),0));
|
||||
VertexType *v1=pos.T()->V(Tetra::VofE(pos.E(),1));
|
||||
//if the two vertices are of border and the edge is not a border edge
|
||||
//we can do it.
|
||||
bool border0=v0->IsB();
|
||||
|
@ -851,7 +853,7 @@ static ScalarType VolumeOriginal()
|
|||
}
|
||||
|
||||
///Calculate the volume on the vertex resulting after collapse...
|
||||
static ScalarType VolumeSimulateCollapse(PosType Pos,CoordType newP)
|
||||
static ScalarType VolumeSimulateCollapse(PosType Pos,CoordType &newP)
|
||||
{
|
||||
VertexType *Vrem=(Pos.T()->V(Tetra::VofE(Pos.E(),0)));
|
||||
VertexType *Vdel=(Pos.T()->V(Tetra::VofE(Pos.E(),1)));
|
||||
|
@ -875,10 +877,10 @@ static ScalarType VolumeSimulateCollapse(PosType Pos,CoordType newP)
|
|||
T.P2(0)=(*ti)->V(2)->cP();
|
||||
T.P3(0)=(*ti)->V(3)->cP();
|
||||
|
||||
vol+=T.ComputeVolume(); */
|
||||
// vol+= vcg::ComputeVolume<TetraType>(*((Tetra3<ScalarType>*)&*ti));
|
||||
vol+=T.ComputeVolume(); */
|
||||
// vol+= vcg::ComputeVolume<TetraType>(*((Tetra3<ScalarType>*)&*ti));
|
||||
|
||||
vol+= vcg::ComputeVolume(**ti);
|
||||
vol+= vcg::ComputeVolume(**ti);
|
||||
ti++;
|
||||
}
|
||||
Vrem->P()=oldpos;
|
||||
|
@ -917,7 +919,7 @@ static void FindSets(vcg::tetra::Pos<TetraType> pos)
|
|||
//set of union minus intersection
|
||||
if ((vf0.Vt()->V(0)!=ve1)&&(vf0.Vt()->V(1)!=ve1)&&(vf0.Vt()->V(2)!=ve1)&&(vf0.Vt()->V(3)!=ve1))
|
||||
_Sets().no_E.push_back(vf0.Vt());
|
||||
vf0++;
|
||||
++vf0;
|
||||
}
|
||||
|
||||
//second vertex iteration
|
||||
|
@ -934,7 +936,7 @@ static void FindSets(vcg::tetra::Pos<TetraType> pos)
|
|||
//set of union minus intersection
|
||||
if ((vf0.Vt()->V(0)!=ve0)&&(vf0.Vt()->V(1)!=ve0)&&(vf0.Vt()->V(2)!=ve0)&&(vf0.Vt()->V(3)!=ve0))
|
||||
_Sets().no_E.push_back(vf0.Vt());
|
||||
vf0++;
|
||||
++vf0;
|
||||
}
|
||||
|
||||
//erase duplicated tetrahedrons from the union set
|
||||
|
@ -959,9 +961,9 @@ static int DoCollapse(PosType p,CoordType newP)
|
|||
{
|
||||
VertexType *v=p.T()->V(p.V());
|
||||
assert(p.T()->HasVTAdjacency());
|
||||
int n_deleted = _Collapse(p,newP);
|
||||
int n_del=_Collapse(p,newP);
|
||||
_InitTetrahedronValues(v);
|
||||
return n_deleted;
|
||||
return n_del;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -24,6 +24,9 @@
|
|||
History
|
||||
|
||||
$Log: not supported by cvs2svn $
|
||||
Revision 1.6 2004/06/25 11:25:07 pietroni
|
||||
changrd update for a vertex normal functions void PerVertex(VertexType *v)
|
||||
|
||||
Revision 1.5 2004/06/15 16:01:26 pietroni
|
||||
added functions to update local vertices normal
|
||||
|
||||
|
@ -74,6 +77,7 @@ typedef typename TetraMeshType::VertexIterator VertexIterator;
|
|||
typedef typename TetraMeshType::TetraType TetraType;
|
||||
typedef typename TetraMeshType::TetraPointer TetraPointer;
|
||||
typedef typename TetraMeshType::TetraIterator TetraIterator;
|
||||
typedef typename VertexType::NormalType NormalType;
|
||||
|
||||
typedef vcg::Face<VertexType,vcg::DUMMYEDGETYPE,vcg::DUMMYFACETYPE> FaceTemp;
|
||||
typedef vcg::tri::TriMesh< std::vector<VertexType>,std::vector<FaceTemp> > TriMeshTemp;
|
||||
|
@ -91,10 +95,10 @@ static void PerTetraFace(TetraMeshType &m)
|
|||
static void PerVertex(VertexType *v)
|
||||
{
|
||||
|
||||
if( !VertexType::HasNormal()) return;
|
||||
if( !VertexType::HasNormal()) return;
|
||||
|
||||
VTIterator<TetraType> VTi=VTIterator<TetraType>(v->VTb(),v->VTi());
|
||||
VertexType::NormalType Norm=VertexType::NormalType(0,0,0);
|
||||
NormalType Norm=NormalType(0,0,0);
|
||||
int iter=0;
|
||||
while (!VTi.End())
|
||||
{
|
||||
|
@ -109,7 +113,7 @@ static void PerVertex(VertexType *v)
|
|||
Norm+=VTi.Vt()->N(f);
|
||||
}
|
||||
}
|
||||
VTi++;
|
||||
++VTi;
|
||||
}
|
||||
Norm/=iter;
|
||||
v->N()=Norm.Normalize();
|
||||
|
|
|
@ -259,7 +259,7 @@ static void DetachVTTopology(VertexType *v,TetraType *t)
|
|||
{
|
||||
lastz=Et.Vi();
|
||||
lastt=Et.Vt();
|
||||
Et++;
|
||||
++Et;
|
||||
}
|
||||
//in the list of the vertex v must be present the
|
||||
//tetrahedron that you want to detach
|
||||
|
@ -270,7 +270,7 @@ static void DetachVTTopology(VertexType *v,TetraType *t)
|
|||
}
|
||||
|
||||
///insert the tetrahedron t in VT topology for vertex v of index z
|
||||
static void InsertVTTopology(VertexType *v,int z,TetraType *t)
|
||||
static void InsertVTTopology(VertexType *v,int z, TetraType *t)
|
||||
{
|
||||
if( ! (*t).IsD())
|
||||
{
|
||||
|
@ -283,7 +283,7 @@ static void InsertVTTopology(VertexType *v,int z,TetraType *t)
|
|||
|
||||
|
||||
///insert the tetrahedron t in VT topology for all his vertices
|
||||
static void InsertVTTopology(TetraType *t)
|
||||
static void InsertVTTopology( TetraType *t)
|
||||
{
|
||||
assert(!t->IsD());
|
||||
int k=0;
|
||||
|
@ -339,27 +339,27 @@ static void TTTopology(VertexContainer &vert,TetraContainer &tetra)
|
|||
(*ti).TTp(2)=(&(*ti));
|
||||
(*ti).TTp(3)=(&(*ti));
|
||||
|
||||
v0=(*ti).V(Tetra3<double>::VofF(0,0));
|
||||
v1=(*ti).V(Tetra3<double>::VofF(0,1));
|
||||
v2=(*ti).V(Tetra3<double>::VofF(0,2));
|
||||
v0=(*ti).V(Tetra::VofF(0,0));
|
||||
v1=(*ti).V(Tetra::VofF(0,1));
|
||||
v2=(*ti).V(Tetra::VofF(0,2));
|
||||
|
||||
VF.push_back(Facet<VertexType,TetraType>(v0,v1,v2,&(*ti),0));
|
||||
|
||||
v0=(*ti).V(Tetra3<double>::VofF(1,0));
|
||||
v1=(*ti).V(Tetra3<double>::VofF(1,1));
|
||||
v2=(*ti).V(Tetra3<double>::VofF(1,2));
|
||||
v0=(*ti).V(Tetra::VofF(1,0));
|
||||
v1=(*ti).V(Tetra::VofF(1,1));
|
||||
v2=(*ti).V(Tetra::VofF(1,2));
|
||||
|
||||
VF.push_back(Facet<VertexType,TetraType>(v0,v1,v2,&(*ti),1));
|
||||
|
||||
v0=(*ti).V(Tetra3<double>::VofF(2,0));
|
||||
v1=(*ti).V(Tetra3<double>::VofF(2,1));
|
||||
v2=(*ti).V(Tetra3<double>::VofF(2,2));
|
||||
v0=(*ti).V(Tetra::VofF(2,0));
|
||||
v1=(*ti).V(Tetra::VofF(2,1));
|
||||
v2=(*ti).V(Tetra::VofF(2,2));
|
||||
|
||||
VF.push_back(Facet<VertexType,TetraType>(v0,v1,v2,&(*ti),2));
|
||||
|
||||
v0=(*ti).V(Tetra3<double>::VofF(3,0));
|
||||
v1=(*ti).V(Tetra3<double>::VofF(3,1));
|
||||
v2=(*ti).V(Tetra3<double>::VofF(3,2));
|
||||
v0=(*ti).V(Tetra::VofF(3,0));
|
||||
v1=(*ti).V(Tetra::VofF(3,1));
|
||||
v2=(*ti).V(Tetra::VofF(3,2));
|
||||
|
||||
VF.push_back(Facet<VertexType,TetraType>(v0,v1,v2,&(*ti),3));
|
||||
}
|
||||
|
@ -415,17 +415,17 @@ static void TestTTTopology(VertexContainer &vert,TetraContainer &tetra)
|
|||
{
|
||||
assert( ((((*ti).TTp(i))->TTp((*ti).TTi(i)))==&(*ti)));
|
||||
|
||||
VertexType *v0=(*ti).V(Tetra3<double>::VofF(i,0));
|
||||
VertexType *v1=(*ti).V(Tetra3<double>::VofF(i,1));
|
||||
VertexType *v2=(*ti).V(Tetra3<double>::VofF(i,2));
|
||||
VertexType *v0=(*ti).V(Tetra::VofF(i,0));
|
||||
VertexType *v1=(*ti).V(Tetra::VofF(i,1));
|
||||
VertexType *v2=(*ti).V(Tetra::VofF(i,2));
|
||||
|
||||
TetraType *t1=(TetraType*)(*ti).TTp(i);
|
||||
assert (!t1->IsD());
|
||||
int z1=(*ti).TTi(i);
|
||||
|
||||
VertexType *vo0=(*t1).V(Tetra3<double>::VofF(z1,0));
|
||||
VertexType *vo1=(*t1).V(Tetra3<double>::VofF(z1,1));
|
||||
VertexType *vo2=(*t1).V(Tetra3<double>::VofF(z1,2));
|
||||
VertexType *vo0=(*t1).V(Tetra::VofF(z1,0));
|
||||
VertexType *vo1=(*t1).V(Tetra::VofF(z1,1));
|
||||
VertexType *vo2=(*t1).V(Tetra::VofF(z1,2));
|
||||
|
||||
assert((v0!=v1)&&(v0!=v2)&&(v1!=v2));
|
||||
assert((vo0!=vo1)&&(vo0!=vo2)&&(vo1!=vo2));
|
||||
|
|
|
@ -48,9 +48,9 @@ class TriConverter
|
|||
public:
|
||||
|
||||
/// The tetrahedral mesh type
|
||||
typedef typename TETRA_MESH TetraMeshType;
|
||||
typedef TETRA_MESH TetraMeshType;
|
||||
/// The triangle mesh type
|
||||
typedef typename TRI_MESH TriangleMeshType;
|
||||
typedef TRI_MESH TriangleMeshType;
|
||||
|
||||
/// The tetrahedron type
|
||||
typedef typename TetraMeshType::TetraType TetraType;
|
||||
|
|
|
@ -24,6 +24,9 @@
|
|||
History
|
||||
|
||||
$Log: not supported by cvs2svn $
|
||||
Revision 1.11 2004/08/26 13:15:23 pietroni
|
||||
added IsS() function
|
||||
|
||||
Revision 1.10 2004/07/09 10:13:00 ganovelli
|
||||
C() ,Q() ,hastetracolor(),hasqualityt()....
|
||||
plus some misuse of tetra3 corrected
|
||||
|
@ -82,7 +85,7 @@ public:
|
|||
/// The base type of the face
|
||||
typedef TETRA_TYPE BaseTetraType;
|
||||
/// The vertex type
|
||||
typedef typename VTYPE VertexType;
|
||||
typedef VTYPE VertexType;
|
||||
/// The coordinate type used to represent the point (i.e. Point3f, Point3d, ...)
|
||||
typedef typename VertexType::CoordType CoordType;
|
||||
/// The scalar type used to represent coords (i.e. float, double, ...)
|
||||
|
|
|
@ -46,7 +46,7 @@ class VTIterator
|
|||
{
|
||||
public:
|
||||
/// The tetrahedron type
|
||||
typedef typename MTTYPE TetraType;
|
||||
typedef MTTYPE TetraType;
|
||||
private:
|
||||
/// Pointer to a tetrahedron
|
||||
TetraType *_vt;
|
||||
|
@ -110,7 +110,7 @@ class Pos
|
|||
public:
|
||||
|
||||
/// The tetrahedron type
|
||||
typedef typename MTTYPE TetraType;
|
||||
typedef MTTYPE TetraType;
|
||||
/// The vertex type
|
||||
typedef typename TetraType::VertexType VertexType;
|
||||
/// The coordinate type
|
||||
|
|
|
@ -24,6 +24,10 @@
|
|||
History
|
||||
|
||||
$Log: not supported by cvs2svn $
|
||||
Revision 1.7 2004/07/09 10:08:21 ganovelli
|
||||
ComputeVOlume moved outside the class and other
|
||||
minor corrections
|
||||
|
||||
Revision 1.6 2004/06/25 18:17:03 ganovelli
|
||||
minor changes
|
||||
|
||||
|
@ -278,8 +282,8 @@ static int FofEE(const int &indexE0,const int &indexE1)
|
|||
class Tetra3:public Tetra
|
||||
{
|
||||
public:
|
||||
typedef Point3< ScalarType > CoordType;
|
||||
typedef ScalarType ScalarType;
|
||||
typedef Point3< ScalarType > CoordType;
|
||||
//typedef typename ScalarType ScalarType;
|
||||
|
||||
/*********************************************
|
||||
|
||||
|
|
|
@ -9,7 +9,7 @@ namespace io {
|
|||
|
||||
template <typename MESHTYPE>
|
||||
class ImporterTS{
|
||||
typedef typename MESHTYPE Tetramesh;
|
||||
typedef MESHTYPE Tetramesh;
|
||||
typedef typename Tetramesh::VertexPointer VertexPointer;
|
||||
typedef typename Tetramesh::VertexType VertexType;
|
||||
typedef typename Tetramesh::TetraType FaceType;
|
||||
|
@ -31,7 +31,7 @@ static int Open( Tetramesh & m, const char * filename )
{
|
|||
int tp3;
|
||||
float mass;
|
||||
FILE *f;
|
||||
Tetramesh::VertexType p1;
|
||||
typename Tetramesh::VertexType p1;
|
||||
f = fopen(filename,"r");
|
||||
if(f == NULL )
|
||||
{
|
||||
|
@ -62,7 +62,7 @@ static int Open( Tetramesh & m, const char * filename )
{
|
|||
fscanf(f, "%i", &tp2 );
|
||||
fscanf(f, "%i", &tp3 );
|
||||
|
||||
Tetramesh::TetraType newTetra;
|
||||
typename Tetramesh::TetraType newTetra;
|
||||
m.tetra.push_back(newTetra);
|
||||
m.tetra.back().Init(&m.vert[tp0],&m.vert[tp1],&m.vert[tp2],&m.vert[tp3]);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue