Création d'un compte pour un collaborateur extérieur au laboratoire depuis l'intranet ICube : https://intranet.icube.unistra.fr/fr/labs/member/profile

Commit 6ab5a4b4 by Pierre Kraemer

correctifs traversor2 + filters OK

parent 88f32610
 ... ... @@ -356,14 +356,15 @@ void filterVNBA(typename PFP::MAP& map, float sigmaN2, float SUSANthreshold, con long nbAdapt = 0 ; long nbSusan = 0 ; std::cout << "compute new vertices normals.." << std::endl ; TraversorV tv(map) ; for(Dart d = tv.begin(); d != tv.end(); d = tv.next()) { if( select(d)) if(select(d)) { const VEC3& normV = normal[d] ; // traversal of neighbour vertices REAL sumArea = 0 ; REAL sigmaX2 = 0 ; REAL sigmaY2 = 0 ; ... ... @@ -373,6 +374,7 @@ void filterVNBA(typename PFP::MAP& map, float sigmaN2, float SUSANthreshold, con bool SUSANregion = false ; // traversal of neighbour vertices Traversor2VVaE tav(map, d) ; for(Dart it = tav.begin(); it != tav.end(); it = tav.next()) { ... ... @@ -447,6 +449,8 @@ void filterVNBA(typename PFP::MAP& map, float sigmaN2, float SUSANthreshold, con } } std::cout << "update face normals.." << std::endl ; // Compute face normals from vertex normals TraversorF tf(map) ; for(Dart d = tf.begin(); d != tf.end(); d = tf.next()) ... ... @@ -469,6 +473,8 @@ void filterVNBA(typename PFP::MAP& map, float sigmaN2, float SUSANthreshold, con } } std::cout << "update vertices positions.." << std::endl ; // Compute new vertices position computeNewPositionsFromFaceNormals( map, position, position2, faceArea, faceCentroid, faceNormal, faceNewNormal, select ... ...
 ... ... @@ -95,12 +95,9 @@ template typename PFP::REAL vertexBarycentricArea(typename PFP::MAP& map, Dart d, const typename PFP::TVEC3& position) { typename PFP::REAL area(0) ; Dart it = d ; do { Traversor2VF t(map, d) ; for(Dart it = t.begin(); it != t.end(); it = t.next()) area += convexFaceArea(map, it, position) / 3 ; it = map.alpha1(it) ; } while(it != d) ; return area ; } ... ... @@ -108,8 +105,8 @@ template typename PFP::REAL vertexVoronoiArea(typename PFP::MAP& map, Dart d, const typename PFP::TVEC3& position) { typename PFP::REAL area(0) ; Dart it = d ; do Traversor2VF t(map, d) ; for(Dart it = t.begin(); it != t.end(); it = t.next()) { const typename PFP::VEC3& p1 = position[it] ; const typename PFP::VEC3& p2 = position[map.phi1(it)] ; ... ... @@ -128,64 +125,51 @@ typename PFP::REAL vertexVoronoiArea(typename PFP::MAP& map, Dart d, const typen else area += tArea / 4 ; } it = map.alpha1(it) ; } while(it != d) ; } return area ; } template void computeAreaFaces(typename PFP::MAP& map, const typename PFP::TVEC3& position, typename PFP::TREAL& face_area, const FunctorSelect& select) { CellMarker marker(map, FACE); for(Dart d = map.begin(); d != map.end(); map.next(d)) TraversorF t(map) ; for(Dart d = t.begin(); d != t.end(); d = t.next()) { if(select(d) && !marker.isMarked(d)) { marker.mark(d); if(select(d)) face_area[d] = convexFaceArea(map, d, position) ; } } } template void computeOneRingAreaVertices(typename PFP::MAP& map, const typename PFP::TVEC3& position, typename PFP::TREAL& vertex_area, const FunctorSelect& select) { CellMarker marker(map, VERTEX); for(Dart d = map.begin(); d != map.end(); map.next(d)) TraversorV t(map) ; for(Dart d = t.begin(); d != t.end(); d = t.next()) { if(select(d) && !marker.isMarked(d)) { marker.mark(d); if(select(d)) vertex_area[d] = vertexOneRingArea(map, d, position) ; } } } template void computeBarycentricAreaVertices(typename PFP::MAP& map, const typename PFP::TVEC3& position, typename PFP::TREAL& vertex_area, const FunctorSelect& select) { CellMarker marker(map, VERTEX); for(Dart d = map.begin(); d != map.end(); map.next(d)) TraversorV t(map) ; for(Dart d = t.begin(); d != t.end(); d = t.next()) { if(select(d) && !marker.isMarked(d)) { marker.mark(d); if(select(d)) vertex_area[d] = vertexBarycentricArea(map, d, position) ; } } } template void computeVoronoiAreaVertices(typename PFP::MAP& map, const typename PFP::TVEC3& position, typename PFP::TREAL& vertex_area, const FunctorSelect& select) { CellMarker marker(map, VERTEX); for(Dart d = map.begin(); d != map.end(); map.next(d)) TraversorV t(map) ; for(Dart d = t.begin(); d != t.end(); d = t.next()) { if(select(d) && !marker.isMarked(d)) { marker.mark(d); if(select(d)) vertex_area[d] = vertexVoronoiArea(map, d, position) ; } } } ... ...
 ... ... @@ -22,6 +22,8 @@ * * *******************************************************************************/ #include "Topology/generic/traversorCell.h" #include "Topology/generic/traversor2.h" #include "Topology/generic/cellmarker.h" namespace CGoGN ... ... @@ -98,13 +100,12 @@ EMB faceCentroidGen(typename PFP::MAP& map, Dart d, const EMBV& attributs) { EMB center = AttribOps::zero(); unsigned int count = 0 ; Dart it = d ; do Traversor2FV t(map, d) ; for(Dart it = t.begin(); it != t.end(); it = t.next()) { center += attributs[it]; ++count ; it = map.phi1(it) ; } while(it != d) ; } center /= double(count); return center ; } ... ... @@ -114,13 +115,12 @@ EMB vertexNeighborhoodCentroidGen(typename PFP::MAP& map, Dart d, const EMBV& at { EMB center = AttribOps::zero(); unsigned int count = 0 ; Dart it = d ; do Traversor2VVaE t(map, d) ; for(Dart it = t.begin(); it != t.end(); it = t.next()) { center += attributs[map.phi1(it)]; center += attributs[it]; ++count ; it = map.alpha1(it) ; } while(it != d) ; } center /= count ; return center ; } ... ... @@ -128,42 +128,33 @@ EMB vertexNeighborhoodCentroidGen(typename PFP::MAP& map, Dart d, const EMBV& at template void computeCentroidVolumes(typename PFP::MAP& map, const typename PFP::TVEC3& position, typename PFP::TVEC3& vol_centroid, const FunctorSelect& select) { CellMarker marker(map, VOLUME) ; for(Dart d = map.begin(); d != map.end(); map.next(d)) TraversorW t(map) ; for(Dart d = t.begin(); d != t.end(); d = t.next()) { if(select(d) && !marker.isMarked(d)) { marker.mark(d); if(select(d)) vol_centroid[d] = volumeCentroid(map, d, position) ; } } } template void computeCentroidFaces(typename PFP::MAP& map, const typename PFP::TVEC3& position, typename PFP::TVEC3& face_centroid, const FunctorSelect& select) { CellMarker marker(map, FACE) ; for(Dart d = map.begin(); d != map.end(); map.next(d)) TraversorF t(map) ; for(Dart d = t.begin(); d != t.end(); d = t.next()) { if(select(d) && !marker.isMarked(d)) { marker.mark(d); if(select(d)) face_centroid[d] = faceCentroid(map, d, position) ; } } } template void computeNeighborhoodCentroidVertices(typename PFP::MAP& map, const typename PFP::TVEC3& position, typename PFP::TVEC3& vertex_centroid, const FunctorSelect& select) { CellMarker marker(map, VERTEX) ; for(Dart d = map.begin(); d != map.end(); map.next(d)) TraversorV t(map) ; for(Dart d = t.begin(); d != t.end(); d = t.next()) { if(select(d) && !marker.isMarked(d)) { marker.mark(d); if(select(d)) vertex_centroid[d] = vertexNeighborhoodCentroid(map, d, position) ; } } } ... ...
 ... ... @@ -72,15 +72,12 @@ private: public: Traversor2VF(MAP& map, Dart dart) : m(map), start(dart) {} Dart begin() { current = start ; if(m.isBoundaryMarked(current)) // jump over a boundary face current = m.alpha1(current) ; return current ; if(m.isBoundaryMarked(start)) // jump over a boundary face start = m.alpha1(start) ; } Dart begin() { current = start ; return current ; } Dart end() { return NIL ; } Dart next() { ... ... @@ -213,7 +210,10 @@ private: public: Traversor2EF(MAP& map, Dart dart) : m(map), start(dart) {} { if(m.isBoundaryMarked(start)) start = m.phi2(current) ; } Dart begin() { current = start ; return current ; } Dart end() { return NIL ; } ... ...
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!