Table of Contents
Commit 2014-06-06
Modifications de la stratégie de reset des boundingBoxes en vue de préparer le prochain commit sur le système hiérarchique de boundingBoxes
Reset des boundingBoxes
Auparavant, l’opération de reset des boundingBoxes (needToBeComuted(True)
) était incluse dans la méthode resetShortCuts()
des classes mtGeoCurve
et mtGeoSurface
. Le reset des boundingBoxes était dès lors en grande partie orchestré par les appels aux méthodes de mise à jour des classes RadialLoading
, RotativeLoading
et UniformLoading
ainsi qu’à chaque début de détection du contact pour le maillage.
Désormais, le chemin poursuivi pour réaliser le reset des boundingBoxes est modifié. Le reset des boundingBoxes est découplé des méthodes resetShortCuts()
et est réalisé non plus à partir de l’objet géométrique de la classe DBLoading
mais à partir du ou des outils de contact de l'interaction.
Le reset des boundingBoxes est opéré en amont dans les routines de détection du contact.
Motivations de la nouvelle stratégie de reset des boîtes
Au moyen de la précédente stratégie de reset des boîtes, si l’objet géométrique sur lequel était imposé le chargement est de plus bas niveau que celui de l’outil de contact, des boundingBoxes immobiles seraient observées pour quelques cas-tests de la batterie au commit suivant, c’est-à-dire des boîtes qui ne suivent pas leur objet géométrique - ces boîtes étant privées de toutes opérations de reset - amenant ainsi des problèmes de convergence et/ou de contacts manqués.
Ensuite, l’animation ci-dessous du cas-test apps.bImp.laursenContact3D
est une illustration manifeste de la résolution des quelques problèmes de boîtes clignotantes qui pouvaient être observés lors du commit précédent suite à des resets de boîtes mal contrôlés.
Boucle sur les éléments des interactions dans la détection du contact
Dans les routines de détection du contact, on peut relever un petit gaspillage du temps CPU puisque la boucle sur les éléments est réalisée quel que soit le type d’interactions. Pour éliminer ce gaspillage, la ligne de code getElementSet().initIterations()
dans la méthode initIterations()
est déplacée de la classe Interaction
vers la classe ContactInteraction
.
Affichage des bounding boxes
Nettoyage partiel des routines.
Fichiers ajoutés/supprimés
— Yanick Crutzen 2014/06/06