Bonjour,
Pour le besoin que je vais vous expliciter plus bas j’ai conlut qu’un arbre de décision binaire était ce qui était le plus adapté mais j’ai un peu de mal à voir comment démarrer.
En gros voici le concept : Dans une application GUI avec un viewer 3D :
On considère qu’un solide est défini par :
- plusieurs faces qui sont elle mêmes définies par :
- plusieurs fils qui sont eux mêmes définis par :
- plusieurs segments qui sont eux même définis par :
- 2 sommets
Chaque entité précedemment cité dispose de sa classe (Solid, Face, Wire, Edge, Vertex) Un des moyens que j’ai actuellement pour identifier une de ces entités est l’usage d’un "selecteur"
Un selecteur est un objet qui permet de filtrer des entités selon certains critères. Par exemple :
le selecteur monSolide.Selector(edges, "|Z")
permet de selectionner tous les segments parallèle à l’axe Z de mon solide.
J’ai à ma disposition tout un tas de selecteurs (perpenticulaire à un axe, entité la plus loin dans une certaine direction, entité disposant de la plus grande surface (pour les faces), ou encore étant inscrit dans une sphere de certaine dimension) De plus les selecteurs peuvent se combiner pour faire des selections encore plus précises.
Tous ces selecteurs permettent de selectionner ce qu’on veut de façon efficace mais il est parfois compliqué de choisir un selecteur adapté lorsqu’on dispose d’un solide complexe.
Mon plan est d’utiliser un arbe de décision pour que l’ordinateur me créer lui même un selecteur adapté lorsque je selectionne une entité (ou plusieurs) donnée.
Cela me semble adapté, car si on considère par exemple le sommet entouré ci-dessous.
On peut filter les sommets et déterminer si oui ou non le sommet considéré est dans la selection.
Par exemple :
- Appartient à la face la plus éloignée dans la direction Y ? -> Non
- Appartient à la face la plus éloignée dans la direction Z ? -> Oui
Et affiner encore avec plus de selecteurs jusqu’à tomber sur le sommet voulu.
Voilà j’en suis là et je ne sais pas trop comment continuer, je ne sais pas comment créer mon arbre.
J’ai suivi le cours sur le site sur les arbres de décision mais j’ai du mal à faire le parallèle avec mon cas.
Je pense qu’une première étape serait de se simplifier le problème, de ne considérer que les sommets avec quelques selecteurs.
Désolé pour le pavé, si vous avez des recommandations, pistes ou quoique ce soit je suis preneur. Je développe en python donc si vous voyez une lib qui fasse exactement ce dont j’ai besoin je suis preneur également.
Merci !