a48  2.0.2
a48 Library

Introduction

a48 (pronounced ['ə-four-eight]) is a dynamic adaptive mesh library which maintains a conforming triangulation of time-varying surfaces. The user supplies an initial mesh, a surface sampling procedure and a set of adaptation criteria. The mesh is automatically modified in order to conform to user defined characteristics, while the surface changes over time. The mesh representation is based on a halfedge data structure without any extra storage requirements. The mesh has also an underlying semi-regular multiresolution structure. The main features of the library are:

  • A simple dynamic adaptive mesh library based on the halfedge datastructure, a standard topological data structure. The implementation of this new adaptive multiresolution functionality does not require any extra storage in the representation. Also, because the halfedge is widely adopted, it should be easy to incorporate the library in many applications.
  • A minimal API for mesh creation and adaptation. This interface complements the traditional topological query operators and consists of only a few functions.
  • A conformal mesh structure that dynamically changes its resolution based on user defined criteria. This makes the associated adaptation capabilities very general and powerful.
  • An effective mechanism for refinement and simplification of semi-regular meshes that maintains a restricted multiresolution structure. This mechanism is based on the concept of a restricted binary multi-triangulation and stellar theory.

Library Structure

The a48 library is built bottom-up by first making available a simple halfedge-based datastructure in the form of a class named: a48::MeshT. From this class, the a48::StellarMeshT class adds stellar operators, based on stellar theory, such as flip and split. The last class is called a48::AdaptiveMeshT class and inherits from a48::StellarMeshT class adding up the simplification and refinement strategies. Every stellar operation and adaptive strategy use the underlying halfedge datastructure to ensure optimal storage capacity and maximum cross-libraries flexibility. Additional functions are implemented in a separated file called mesh.hh. For more information on each class see the individual documentation pages and the respective examples.

Related repositories

The related pages contains a list of repositories related to the main library. While the Sub-repositories of the a48 library exposes only a subset of the library main functionality, the M4G: Manifolds for GPUs repositories extends the a48 library to use external libraries to assemble different applications.

How to use

The a48 library is a template-based library built entirely on each corresponding header .hh file. Therefore to use the library just include the desired header file.

The mesh can be either a base mesh with policies to control the multi-resolution growing bottom-up or a complete mesh with policies to restore the multi-resolution shrink top-down. This can be thought as two kinds of multi-resolution pyramids: thin in the base and large in the top (base-mesh approach); or large base with thin top (full mesh given).

How to get it

The source code of the a48 library is available under the GNU General Public License version 3, refer to the COPYING file for more details.

The a48 library can be downloaded from the git repository (gitorious) at IMPA (Institute of Pure and Applied Mathematics) using the following command:

$ git clone git://gitorious.impa.br/a48/a48.git

Alternatively, a stable (but not latest) release can be downloaded from the following link:

http://www.impa.br/~andmax/libs/a48-2.0.1.tgz

Note that this tarball file may be behind the source code version on the git repository.

Version history

  • 2.0.0 :: Basic release version, following the original idea from: a48 1.x
  • 2.0.1 :: Additional utility classes (adaptive policies) and an OpenGL(tm) with GLUT(tm) example.
  • 2.0.2 :: Refactoring of the code.

Acknowledgments

This library was developed during the postdoctoral research of Andre Maximo at IMPA under the supervision of Professor Luiz Velho. We acknowledge the grant to the postdoc provided by Brazilian research agency CNPq (National Counsel of Technological and Scientific Development).

Credits

The people involved in the project of this library are listed below:

Main Code:

Andre Maximo

Collaborators:

Leonardo Carvalho

Project Supervisor:

Luiz Velho
 All Classes Namespaces Files Functions Typedefs