|
Architecture and operationsOperationsMoka contains more than 20 types of different operations, many
of them being declined in several variants depending on the dimension
or on different options. We can group the main operations in important
categories: - The basic operations: like creations of basic
objects (polygons, pyramids, cubes, torus, spheres...), the sewings
(to put in relation two objects by identifying some cells), the
unsewings (reverse operations) and sticks on;
- The modification operations: for example the cell removals
and contractions, triangulations or quadrangulations
operations, cell insertions or closing;
- The extrusions which can be simple, along a path or by revolution;
- The chamfering (or rounding) of vertices of edges.
- The meshing or smoothing which allow to refine a
subdivision to obtain smother forms ;
- The boolean operations which are primordial to in a modeler,
and which allow objects union, intersection and difference;
- The operations of topological computations: computation of
number of cells, computation of Euler characteristic and
of homology groups (that includes Betti numbers).
ArchitectureThe architecture of MOKA is inspired from classical schema
of model-view-controler. Moreover, the software is cut in several
libraries in order to facilitate its modularity and its extension. - lib-gmapkernel: the kernel of MOKA, containing
the 3G-map definition and the main operations;
- lib-controleur: a controler makes the link between
a model and a GUI. This part of the controler is generic without
any link with 3G-map;
- lib-controleur-gmap: the part of the controler which
is related to the kernel (lib-gmapkernel). The controler contains
all the kernel operations, but added with the management of operation
parameters, the management of view allowing to compute openGL lists used
for drawing the model. For these reasons, a GUI must call only
controler methods, and not directly the methods of the model;
- high level operations are separated in modules which can be
enabled of disabled depending on your needs. Each module is defines
in a separated library. Actually, there are the following modules:
- lib-mesh Smoothing and meshing operations
- lib-rounding rounding operations (chamfering)
- lib-corefinement corefining operations (which are the
basis for boolean operations)
- lib-tools some operations used in other modules
Other modules are specific operations dedicated to some research works:- lib-spamod a module allowing to visualize objects in their discrete
form (pixels in 2D and voxels in 3D)
- lib-extraction-images a module allowing to extract a map
from a 3D image
- lib-homology homology groups computation
BugsKernel operations (in lib-gmapkernel) are stable and normally
do not cause crash. However, send us an email in case of problems. But it is possible that some operations in modules contain again
some bugs. One again, send us an email saying the problems.
|