|
Opérations et ArchitectureOpérationsMOKA contient actuellement plus de 20 types d'opérations
différentes, qui se déclinent pour la plupart en plusieurs variantes
selon la dimension ou selon plusieurs options. On peut regrouper les
principales opérations en grandes catégories : - Les opérations de bases : ce sont les créations
d'objets de base (polygones, pyramides, cubes, tores, sphères...),
les coutures (mise en relation d'objets par
identification de cellules), décousures (les opérations inverse)
et plaquages ;
- Les opérations de modifications : par exemple les
suppressions et les contractions de cellules, les opérations
de triangulations ou quadrangulations, les
insertions de cellules ou les fermetures ;
- Les extrusions qui peuvent être simple, le long d'un chemin
ou par révolution ;
- Le chanfreinage (ou arrondi) de sommets ou d'arêtes
- Les maillages ou lissage qui permettent de raffiner
une subdivision, avec dans le cas des lissages une modification de la
géométrie pour obtenir des formes plus douces ;
- Les opérations booléennes qui sont primordiales dans un
modeleur, et qui permettent l'union, l'intersection et la différence
d'objets ;
- Les opérations de calculs topologiques : calcul des nombres de cellules
de la caractéristique d'Euler, et des groupes d'homologies.
(qui incluent les nombres de Betti.
ArchitectureL'architecture de MOKA s'inspire du schéma classique
modèle-vue-contrôleur. De plus, le logiciel est découpé en plusieurs
librairies ce qui facilite sa modularité et donc son extension. - lib-gmapkernel : le noyau de MOKA c'est à dire la
définition des 3-G-cartes et les principales opérations ;
- lib-controleur : le contrôleur est une surcouche
faisant le lien entre un modèle et les éventuelles IHM. Cette
partie est générique sans lien avec les cartes ;
- lib-controleur-gmap : la partie du contrôleur qui
est en lien avec le noyau (lib-gmapkernel). Le contrôleur contient
toute les opérations du noyau mais avec une surcouche ajoutant la
gestion des paramètres des opérations ainsi que des notions de vues
permettant de calculer les listes openGL nécessaire à
l'affichage. De ce fait, une ihm doit uniquement faire appel aux
fonctions du contrôler et n'accède normalement jamais directement au
modèle ;
- les opérations plus évoluées sont séparées dans des modules qui
peuvent être activés ou désactivés selon les besoins. Chaque module est
défini dans une librairie séparée. Pour le moment nous avons les
modules suivants :
- lib-mesh les opérations de maillage et lissage
- lib-rounding les opérations d'arrondi (chanfreinage)
- lib-corefinement les opérations de corafinement (à la
base des opérations booléenne)
- lib-tools quelques opérations utilisées dans d'autres modules
D'autres modules sont des opérations spécifiques dédié à des
thématiques de recherche :- lib-spamod un module de visualisation des objets sous forme discrète
(pixels en 2D et voxels en 3D)
- lib-extraction-images un module permettant d'extraire une carte
à partir d'une image 3D
- lib-homology les opérations de calcul des groupes d'homologie
BugsLes opérations se trouvant dans le noyau
(lib-gmapkernel) sont stables et ne doivent pas provoquer de plantage
du logiciel. Cependant, envoyez nous un email si vous rencontrez des
problèmes. Par contre, il est possible que certaines
opérations se trouvant dans les modules comportent encore
quelques bugs. La aussi, envoyez nous un email pour nous signaler
les problèmes que vous avez rencontrés.
|