Table of Contents
Commit 2017-12-10
Ce commit est pour ajouter les DualGraphTree et le BottomUpBVHBuilder dans le but de rapatrier mes derniers développements.
Dual Graph Tree
Cette structure représente les différentes connectivités dans un wire et une skin. Dans le cas d'un wire, les noeuds sont les courbes et les bords sont les points. Dans le cas d'une skin, les noeuds sont les sides et les bords sont les courbes. Ainsi, on peut facilement connaitre les voisins directs d'une side ou d'une courbe en parcourant l'arbre. Pour la construction des bords, j'ai implémenté un petit bucket sort afin d'accélérer la recherche des voisins.
Bottom Up BVH Builder
Sur base du graphe dual d'une skin ou d'un wire, il est possible de créer une hiérarchie de volume frontière en partant des feuilles de l'arbre vers le sommet de l'arbre, en groupant au fur et à mesure les différentes courbes et sides. Cette procédure est indispensable pour le cas de l'auto-contact pour pouvoir tenir compte du critère de courbure locale et d'adjacence.
Tests
J'ai ajouté des tests pour la recherche globale du contact en auto-contact et en contact avec une hiérarchie de volume frontière.
Pour pouvoir utiliser cette fonctionnalité, il suffit de générer un BVHOptions et le transmettre à l'interaction de contact :
ci = Rd|Sc|Dd|FdRd|ContactInteraction(1) option = BVHOptions() option.setBottomUp(True|False) option.setVerbose(True|False) option.setVerboseTimer(True|False) option.setDebug(True|False) option.setLeafSize(N) et N est un entier positif. option.setUseSelfBVH(True|False) ci.setBVHOptions(option)
Références
[1] A large deformation mortar formulation of self contact with finite sliding, Bin Yang and Tod A. Laursen
[2] A contact searching algorithm including bounding volume trees applied to finite sliding mortar formulations, Bin Yang and Tod A. Laursen
[3] Hierarchical Face Clustering on Polygonal Surfaces, Michael Garland, Andrew Willmott and Paul S. Heckbert
[4] Quadric-Based Simplification in Any Dimension, MICHAEL GARLAND and YUAN ZHOU
Fichiers ajoutés/supprimés
[a]:oo_meta\mtGeo\mtGeoAAOBBoundaryVolume.cpp [a]:oo_meta\mtGeo\mtGeoAAOBBoundaryVolume.h [a]:oo_meta\mtGeo\mtGeoBottomUpBVHBuilder.cpp [a]:oo_meta\mtGeo\mtGeoBottomUpBVHBuilder.h [a]:oo_meta\mtGeo\mtGeoBucketSort.cpp [a]:oo_meta\mtGeo\mtGeoBucketSort.h [a]:oo_meta\mtGeo\mtGeoBVHOptions.cpp [a]:oo_meta\mtGeo\mtGeoBVHOptions.h [a]:oo_meta\mtGeo\mtGeoCurveWithDualGraph.cpp [a]:oo_meta\mtGeo\mtGeoCurveWithDualGraph.h [a]:oo_meta\mtGeo\mtGeoDualGraphEdge.cpp [a]:oo_meta\mtGeo\mtGeoDualGraphEdge.h [a]:oo_meta\mtGeo\mtGeoDualGraphNode.cpp [a]:oo_meta\mtGeo\mtGeoDualGraphNode.h [a]:oo_meta\mtGeo\mtGeoDualGraphTree.cpp [a]:oo_meta\mtGeo\mtGeoDualGraphTree.h [a]:oo_meta\mtGeo\mtGeoSelfBottomUpBVHBuilder.cpp [a]:oo_meta\mtGeo\mtGeoSelfBottomUpBVHBuilder.h [a]:oo_meta\mtGeo\mtGeoSelfBoundaryVolumeHierarchy.cpp [a]:oo_meta\mtGeo\mtGeoSelfBoundaryVolumeHierarchy.h [a]:oo_meta\mtGeo\mtGeoSideWithDualGraph.cpp [a]:oo_meta\mtGeo\mtGeoSideWithDualGraph.h [a]:oo_meta\mtGeo\mtGeoSkinDualGraphEdge.cpp [a]:oo_meta\mtGeo\mtGeoSkinDualGraphEdge.h [a]:oo_meta\mtGeo\mtGeoSkinDualGraphNode.cpp [a]:oo_meta\mtGeo\mtGeoSkinDualGraphNode.h [a]:oo_meta\mtGeo\mtGeoSkinDualGraphTree.cpp [a]:oo_meta\mtGeo\mtGeoSkinDualGraphTree.h [a]:oo_meta\mtGeo\mtGeoSkinSelfBoundaryVolumeHierarchy.cpp [a]:oo_meta\mtGeo\mtGeoSkinSelfBoundaryVolumeHierarchy.h [a]:oo_meta\mtGeo\mtGeoWireDualGraphEdge.cpp [a]:oo_meta\mtGeo\mtGeoWireDualGraphEdge.h [a]:oo_meta\mtGeo\mtGeoWireDualGraphNode.cpp [a]:oo_meta\mtGeo\mtGeoWireDualGraphNode.h [a]:oo_meta\mtGeo\mtGeoWireDualGraphTree.cpp [a]:oo_meta\mtGeo\mtGeoWireDualGraphTree.h [a]:oo_meta\mtGeo\mtGeoWireSelfBoundaryVolumeHierarchy.cpp [a]:oo_meta\mtGeo\mtGeoWireSelfBoundaryVolumeHierarchy.h [a]:oo_meta\mtGeo\mtGeoWithDualGraph.cpp [a]:oo_meta\mtGeo\mtGeoWithDualGraph.h [r]:
Cas tests ajoutés/supprimés
[a]:oo_nda\meca0464/tests/threeRingsContactTestBVHBottomUp.py [a]:oo_nda\meca0464/tests/threeRingsContactTestSelfBVHBottomUp.py [a]:oo_nda\meca0464/tests/twoRingsContactTestBVHBottomUp.py [a]:oo_nda\meca0464\tests\threeRingsContactTestBVHBottomUp.tsc [a]:oo_nda\meca0464\tests\threeRingsContactTestSelfBVHBottomUp.tsc [a]:oo_nda\meca0464\tests\twoRingsContactTestBVHBottomUp.tsc [a]:oo_meta\apps\imp\ddrawingBVHBottomUp.py [a]:oo_meta\apps\imp\ddrawingBVHBottomUp.tsc [a]:oo_meta\mtContact\tests\threeBeamsRingContactTestBVHBottomUp.py [a]:oo_meta\mtContact\tests\threePlatesCylinderContactTestBVHBottomUp.py [a]:oo_meta\mtContact\tests\torusCylinderContactTestBVHBottomUp.py [a]:oo_meta\mtContact\tests\twoToriContactTestBVHBottomUp.py [a]:oo_meta\mtContact\tests\threeBeamsRingContactTestBVHBottomUp.tsc [a]:oo_meta\mtContact\tests\threePlatesCylinderContactTestBVHBottomUp.tsc [a]:oo_meta\mtContact\tests\torusCylinderContactTestBVHBottomUp.tsc [a]:oo_meta\mtContact\tests\twoToriContactTestBVHBottomUp.tsc [r]:
— gaëtan 2017/12/09 18:00