Commit 31d661f3 authored by untereiner's avatar untereiner

subdivision is back

parent 8c42763d
......@@ -143,7 +143,7 @@ void Map2MR<PFP>::addNewLevel(bool triQuad)
}
template <typename PFP>
void Map2MR<PFP>::addNewLevelSqrt3(bool embedNewVertices)
void Map2MR<PFP>::addNewLevelSqrt3()
{
m_map.pushLevel() ;
......@@ -205,7 +205,7 @@ void Map2MR<PFP>::addNewLevelSqrt3(bool embedNewVertices)
}
template <typename PFP>
void Map2MR<PFP>::addNewLevelSqrt2(bool embedNewVertices)
void Map2MR<PFP>::addNewLevelSqrt2()
{
m_map.pushLevel() ;
......
......@@ -235,15 +235,11 @@ void Map3MR<PFP>::addNewLevelTetraOcta()
{
Traversor3WV<typename PFP::MAP> traWV(m_map, dit);
Dart centralDart = NIL;
for(Dart ditWV = traWV.begin(); ditWV != traWV.end(); ditWV = traWV.next())
{
m_map.setCurrentLevel(m_map.getMaxLevel()) ;
Dart x = m_map.phi_1(m_map.phi2(m_map.phi1(ditWV)));
centralDart = x;
if(!Algo::Modelisation::Tetrahedralization::isTetrahedron<PFP>(m_map,x))
{
DartMarkerStore me(m_map);
......@@ -271,9 +267,6 @@ void Map3MR<PFP>::addNewLevelTetraOcta()
}
m_map.setCurrentLevel(m_map.getMaxLevel() - 1) ;
}
if(centralDart != NIL)
m_map.template setOrbitEmbedding<VERTEX>(centralDart, m_map.template getEmbedding<VERTEX>(centralDart));
}
m_map.popLevel() ;
......@@ -366,63 +359,63 @@ void Map3MR<PFP>::addNewLevelHexa()
splitSurfaceInVolume(v);
// Dart dd = m_map.phi2(m_map.phi1(ditWV));
// Dart next = m_map.phi1(m_map.phi1(dd)) ;
// m_map.PFP::MAP::ParentMap::splitFace(dd, next) ;
//
// Dart ne = m_map.phi2(m_map.phi_1(dd));
// m_map.PFP::MAP::ParentMap::cutEdge(ne) ;
// centralDart = m_map.phi1(ne);
//
// dd = m_map.phi1(m_map.phi1(next)) ;
// while(dd != ne)
// {
// Dart tmp = m_map.phi1(ne) ;
// m_map.PFP::MAP::ParentMap::splitFace(tmp, dd) ;
// dd = m_map.phi1(m_map.phi1(dd)) ;
// }
Dart dd = m_map.phi2(m_map.phi1(ditWV));
Dart next = m_map.phi1(m_map.phi1(dd)) ;
m_map.PFP::MAP::ParentMap::splitFace(dd, next) ;
Dart ne = m_map.phi2(m_map.phi_1(dd));
m_map.PFP::MAP::ParentMap::cutEdge(ne) ;
centralDart = m_map.phi1(ne);
dd = m_map.phi1(m_map.phi1(next)) ;
while(dd != ne)
{
Dart tmp = m_map.phi1(ne) ;
m_map.PFP::MAP::ParentMap::splitFace(tmp, dd) ;
dd = m_map.phi1(m_map.phi1(dd)) ;
}
m_map.setCurrentLevel(m_map.getMaxLevel() - 1) ; //Utile ?
}
// m_map.setCurrentLevel(m_map.getMaxLevel()) ;
// //4 couture des relations precedemment sauvegarde
// for (std::vector<std::pair<Dart,Dart> >::iterator it = subdividedFaces.begin(); it != subdividedFaces.end(); ++it)
// {
// Dart f1 = m_map.phi2((*it).first);
// Dart f2 = m_map.phi2((*it).second);
//
// //if(isBoundaryFace(f1) && isBoundaryFace(f2))
// if(m_map.phi3(f1) == f1 && m_map.phi3(f2) == f2)
// m_map.sewVolumes(f1, f2, false);
// }
// m_map.template setOrbitEmbedding<VERTEX>(centralDart, m_map.template getEmbedding<VERTEX>(centralDart));
m_map.setCurrentLevel(m_map.getMaxLevel()) ;
//4 couture des relations precedemment sauvegarde
for (std::vector<std::pair<Dart,Dart> >::iterator it = subdividedFaces.begin(); it != subdividedFaces.end(); ++it)
{
Dart f1 = m_map.phi2((*it).first);
Dart f2 = m_map.phi2((*it).second);
//if(isBoundaryFace(f1) && isBoundaryFace(f2))
if(m_map.phi3(f1) == f1 && m_map.phi3(f2) == f2)
m_map.sewVolumes(f1, f2, false);
}
m_map.template setOrbitEmbedding<VERTEX>(centralDart, m_map.template getEmbedding<VERTEX>(centralDart));
m_map.setCurrentLevel(m_map.getMaxLevel() - 1) ;
}
//
// //A optimiser
// m_map.setCurrentLevel(m_map.getMaxLevel()-1) ;
// TraversorE<typename PFP::MAP> travE2(m_map);
// for (Dart d = travE2.begin(); d != travE2.end(); d = travE2.next())
// {
// m_map.setCurrentLevel(m_map.getMaxLevel()) ;
// m_map.template setOrbitEmbedding<VERTEX>(m_map.phi1(d), m_map.template getEmbedding<VERTEX>(m_map.phi1(d)));
// m_map.setCurrentLevel(m_map.getMaxLevel()-1) ;
// }
// m_map.setCurrentLevel(m_map.getMaxLevel()) ;
//
// m_map.setCurrentLevel(m_map.getMaxLevel()-1) ;
// TraversorF<typename PFP::MAP> travF2(m_map) ;
// for (Dart d = travF2.begin(); d != travF2.end(); d = travF2.next())
// {
// m_map.setCurrentLevel(m_map.getMaxLevel()) ;
// m_map.template setOrbitEmbedding<VERTEX>(m_map.phi2(m_map.phi1(d)), m_map.template getEmbedding<VERTEX>(m_map.phi2(m_map.phi1(d))));
// m_map.setCurrentLevel(m_map.getMaxLevel()-1) ;
// }
// m_map.setCurrentLevel(m_map.getMaxLevel()) ;
//
// m_map.popLevel() ;
//A optimiser
m_map.setCurrentLevel(m_map.getMaxLevel()-1) ;
TraversorE<typename PFP::MAP> travE2(m_map);
for (Dart d = travE2.begin(); d != travE2.end(); d = travE2.next())
{
m_map.setCurrentLevel(m_map.getMaxLevel()) ;
m_map.template setOrbitEmbedding<VERTEX>(m_map.phi1(d), m_map.template getEmbedding<VERTEX>(m_map.phi1(d)));
m_map.setCurrentLevel(m_map.getMaxLevel()-1) ;
}
m_map.setCurrentLevel(m_map.getMaxLevel()) ;
m_map.setCurrentLevel(m_map.getMaxLevel()-1) ;
TraversorF<typename PFP::MAP> travF2(m_map) ;
for (Dart d = travF2.begin(); d != travF2.end(); d = travF2.next())
{
m_map.setCurrentLevel(m_map.getMaxLevel()) ;
m_map.template setOrbitEmbedding<VERTEX>(m_map.phi2(m_map.phi1(d)), m_map.template getEmbedding<VERTEX>(m_map.phi2(m_map.phi1(d))));
m_map.setCurrentLevel(m_map.getMaxLevel()-1) ;
}
m_map.setCurrentLevel(m_map.getMaxLevel()) ;
m_map.popLevel() ;
}
//void Map3MR_PrimalRegular::addNewLevel(bool embedNewVertices)
......
......@@ -78,10 +78,10 @@ Dart EmbeddedMap3::cutEdge(Dart d)
{
Dart nd = Map3::cutEdge(d);
if(isOrbitEmbedded<VERTEX>())
{
initOrbitEmbeddingNewCell<VERTEX>(nd) ;
}
// if(isOrbitEmbedded<VERTEX>())
// {
// initOrbitEmbeddingNewCell<VERTEX>(nd) ;
// }
if(isOrbitEmbedded<EDGE>())
{
......@@ -236,10 +236,10 @@ void EmbeddedMap3::splitFace(Dart d, Dart e)
setDartEmbedding<VERTEX>(phi_1(dd), vEmb2);
}
if(isOrbitEmbedded<EDGE>())
{
initOrbitEmbeddingNewCell<EDGE>(phi_1(d)) ;
}
// if(isOrbitEmbedded<EDGE>())
// {
// initOrbitEmbeddingNewCell<EDGE>(phi_1(d)) ;
// }
if(isOrbitEmbedded<FACE2>())
{
......@@ -428,7 +428,6 @@ bool EmbeddedMap3::mergeVolumes(Dart d)
{
if (isOrbitEmbedded<VOLUME>())
{
std::cout << "plop" << std::endl;
setOrbitEmbedding<VOLUME>(d2, getEmbedding<VOLUME>(d2)) ;
}
return true;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment