commit:2017:08_16
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
commit:2017:08_16 [2017/08/16 13:33] – [Boundary Volume Hierarchy] wautelet | commit:2017:08_16 [2017/08/16 18:20] (current) – [Fichiers ajoutés/supprimés] wautelet | ||
---|---|---|---|
Line 12: | Line 12: | ||
Pour améliorer l' | Pour améliorer l' | ||
- | |||
Je vous fournis aussi les références utilisées pour l' | Je vous fournis aussi les références utilisées pour l' | ||
+ | * Bin Yang, Tod A. Laursen : A contact searching algorithm including bounding volume trees applied to finite sliding mortar formulations [2006] | ||
+ | * T. L. Kay & J. T. Kajiya, Ray tracing complex scenes [1986] (Spatial median splits) | ||
+ | * Efficient Collision Detection Using Bounding Volume Hierarchies of k-DOPs, J. T. Klosowski et al. [1998] (k-DOPs) | ||
- | + | Par exemple, le cas de l' | |
- | === Implémentation === | + | |
- | Les routines de parcours | + | {{: |
+ | {{: | ||
+ | |||
+ | === Détails d' | ||
+ | |||
+ | Les routines de manipulation | ||
L' | L' | ||
Line 26: | Line 32: | ||
La construction de l' | La construction de l' | ||
- | Chaque nœud de l' | + | Chaque nœud de l' |
- | | + | Finalement, les classes liées à la gestion d'un arbre des volumes d' |
=== Cas Test === | === Cas Test === | ||
Le système de recherche sous forme d' | Le système de recherche sous forme d' | ||
+ | |||
+ | < | ||
+ | ci1 = RdContactInteraction(1) | ||
+ | ci1.push(wireset(1)) | ||
+ | ci1.setTool(wireset(2)) | ||
+ | ci1.setUseBVH(parameters[' | ||
+ | interactionset.add(ci1) | ||
+ | </ | ||
Je vous indique ici les différentes performances observées avec quelques cas-tests de la batterie : | Je vous indique ici les différentes performances observées avec quelques cas-tests de la batterie : | ||
+ | |Cas test | CPU sans BVH (sec) | CPU avec BVH (sec) | Différence (sec) | | ||
+ | |apps.imp.ddrawingBVH| 169.672 | 168.859 | 0.813 (0.5 %) | | ||
+ | |meca0464.tests.threeRingsContactTest| 36.6406 | 28.2344 | 8.4062 (23 %) | | ||
+ | |meca0464.tests.twoRingsContactTest| 12.6406 | 11.9375 | 0.703 (5.5 %) | | ||
+ | |mtContact.tests.threePlatesCylinderContactTest| 922.141 | 558.453 | 363.688 (39 %) | | ||
+ | |mtContact.tests.threeBeamsRingContactTest| 332.547 | 182.609 | 149.938 (45 %) | | ||
+ | |mtContact.tests.torusCylinderContactTest| 622.391 | 329.219 | 293.172 (47 %) | | ||
+ | |mtContact.tests.twoToriContactTest| 251.141 | 173.453 | 77.688 (31 %) | | ||
+ | Finalement, il est très recommandé d' | ||
+ | |||
+ | <note important> | ||
+ | |||
+ | === Visualisation Graphique === | ||
+ | |||
+ | J'ai ajouté la possibilité de voir les arbres dans Metafor. Je vous fournis ici quelques captures d' | ||
+ | |||
+ | {{: | ||
=== Extensions possibles === | === Extensions possibles === | ||
Line 45: | Line 76: | ||
* Parcourir/ | * Parcourir/ | ||
* Utiliser des volumes d' | * Utiliser des volumes d' | ||
- | * Mettre à jour l' | + | * Mettre à jour l' |
+ | |||
+ | Finalement, une autre manière d' | ||
+ | === Intégration numérique === | ||
+ | Afin de calculer une surface, une longueur, ainsi qu'un centre de gravité aisément, j'ai implémenté une quadrature automatique du type Clenshaw-Curtis (Stratégie de sous-division locale). Également afin de conserver une certaine généralité, | ||
+ | Références : | ||
+ | * Computational Integration de Arnold R. Krommer et Christoph W. Ueberhuber, p 427 | ||
+ | * A self-adaptive Clenshaw-Curtis quadrature scheme for efficient integration over parametric CAD surfaces, R.N. Simpson, Z. Liu, University of Glasgow | ||
+ | * Is Gauss quadrature better than Clenshaw-Curtis ?, Lloyd N. Trefethen, 2008 | ||
===== Fichiers ajoutés/ | ===== Fichiers ajoutés/ | ||
< | < | ||
- | [a]: | + | [a]:oo_meta\mtDrawables\BVHTreeDrawer.cpp |
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
[r]: | [r]: | ||
</ | </ | ||
Line 61: | Line 147: | ||
< | < | ||
- | [a]: | + | [a]:oo_nda/ |
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
+ | [a]: | ||
[r]: | [r]: | ||
</ | </ |
commit/2017/08_16.1502883222.txt.gz · Last modified: 2017/08/16 13:33 by wautelet