68 lines
2.4 KiB
Plaintext
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.
|
|
|
|
*/
|