vcglib/docs/Doxygen/index.dxy

68 lines
2.4 KiB
Plaintext

/** \mainpage The VCG Library
The Visualization and Computer Graphics Library (VCG for short) is
a open source portable C++ templated library for manipulation, processing
and displaying with OpenGL of triangle and tetrahedral meshes.
The library, composed by more than 50k lines of code,
is released under the GPL license, and it is the base of most of the
software tools of the <b>Visual Computing Lab</b> of the Italian National Research Council Institute ISTI
(http://vcg.isti.cnr.it), like metro and MeshLab.
The VCG library was built to manage triangular meshes, so most of the classes
and algorithms it contains are related to such object. This is especially true
for the things that are in the "mesh" folder of the tree. This document
basically explains how the concept of mesh is implemented, i.e. what the "type"
of a mesh is and how it can be obtained, how the connectivity of the mesh is
stored and how it is used to visit the mesh. This part of the library is self
contained, only standard libraries are included, as STL (which are intensively
used all over the code).
- \subpage install "Installing the VCG Library"
- \subpage basic_concepts "Basic Concepts"
- \subpage adjacency "Adjacency and Topology"
- \subpage allocation "Creating and destroying elements"
- \subpage attributes "Adding user defined attributes to mesh elements"
- \subpage fileformat "Loading and saving meshes"
Point3 as an example of the style
--------
We won't going through all of the files and classes of the library to show how
it is built. You will find most of the information in the code as comments, and
when understood the implementation flavor, you won't even need the comments.
The definition of class Point3 looks like this:
\code
template <class T> class Point3 {
public:
Point3() { }
~Point3() { }
private:
T _v[3];
// ....
// ....
public:
T & X(){return v[0];}
T & Y(){return v[1];}
T & Z(){return v[2];}
// ...... operators
};
\endcode
You will find that most of (if not all of) the classes have some template
parameters. In this case it is used to say which type is used as coordinate
(most of the times it will be float or double, but it can be any type
implementing the operator used in the bodies of Point3 operators). Another
common characteristic is the access method to the data (in this case v[3]),
which are always defined as private member.
*/