Subversion Repositories gelsvn

Rev

Rev 89 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 89 Rev 113
Line 1... Line 1...
1
/** \mainpage GEL: Geometric and linear algebra tools.
1
/** \mainpage GEL: GEometric and Linear algebra tools.
2
 
2
 
3
GEL is a framwork for working with graphics and certain vision related
3
GEL is a framwork for computer graphics and 3D vision.
-
 
4
 
4
tasks. There is a good deal of tools for processing Geometry and
5
There are a good many tools for computational geometry processing: A
5
some tools for computer Graphics. There is a halfedge based mesh class in the
6
voxel grid and a simple triangle mesh data structure. There is also a
6
HMesh namespace, and an indexed face set based mesh class IMesh.
7
more advanced triangle mesh data structure called IMesh and a halfedge
-
 
8
based polygonal mesh data structure called HMesh. There is a very
-
 
9
useful data structure known as a k-D tree and many other things. 
7
 
10
 
8
Also found are two packages for linear algebra: CGLA is strictly for small
11
Also found are two packages for linear algebra: CGLA is strictly for small
9
vectors and matrices. LinAlg is a lapack wrapper for slightly larger 
12
vectors and matrices. LinAlg is a Lapack wrapper for slightly larger 
10
problems. Finally there are some utilities in Util.
13
problems. At this point, it is fairly simple.
-
 
14
 
-
 
15
Finally there are some utilities in Util: Getting command line arguments,
-
 
16
hash table classes, a 2D grid class, a resource manager and other 
-
 
17
miscellany.
11
*/
18
*/
12
 
19
 
13
/** \namespace CGLA
20
/** \namespace CGLA
14
\brief Computer Graphics Linear Algebra
21
\brief Computer Graphics Linear Algebra.
-
 
22
 
-
 
23
CGLA is a set of numerical C++ vector and matrix classes and class
-
 
24
templates designed with computer graphics in mind. CGLA stands for
-
 
25
``Computer Graphics Linear Algebra''.
-
 
26
 
-
 
27
Let us get right down to the obvious question: Why create another
-
 
28
linear algebra package?
-
 
29
Well, CGLA evolved from a few matrix and vector classes because I
-
 
30
didn't have anything better. Also, I created CGLA to experiment with
-
 
31
some template programming techniques. This led to the most important
-
 
32
feature of CGLA, namely the fact that all vector types are derived
-
 
33
from the same template. 
-
 
34
 
-
 
35
This makes it easy to ensure identical semantics: Since all vectors
-
 
36
have inherited, say, the * operator from a common ancestor, it works
-
 
37
the same for all of them.
-
 
38
 
-
 
39
It is important to note that CGLA was designed for Computer Graphics 
-
 
40
(not numerical computations) and this had a number of
-
 
41
implications. Since, in computer graphics we mainly need small vectors
-
 
42
of dimension 2,3, or 4 CGLA was designed for vectors of low
-
 
43
dimensionality. Moreover, the amount of memory allocated for a vector
-
 
44
is decided by its type at compile time. CGLA does not use dynamic
-
 
45
memory. CGLA also does not use virtual functions, and most functions
-
 
46
are inline. These features all help making CGLA relatively fast. 
-
 
47
 
-
 
48
Of course, other libraries of vector templates for computer graphics
-
 
49
exist, but to my knowledge none where the fundamental templates are
-
 
50
parametrized w.r.t. dimension as well as type. In other words, we have
-
 
51
a template (ArithVec) that gets both type
-
 
52
(e.g. float) and dimension 
-
 
53
(e.g. 3) as arguments. the intended use of this template is as
-
 
54
ancestor of concrete types such as Vec3f - a 3D floating
-
 
55
point type. 
-
 
56
 
-
 
57
The use of just one template as basis is very important, I believe,
-
 
58
since it makes it extremely simple to add new types of
-
 
59
vectors. Another very generic template is ArithMat which is a
-
 
60
template for matrix classes. (and not necessarily NxN matrices). 
-
 
61
 
-
 
62
From a users perspective CGLA contains a number of vector and matrix
-
 
63
classes, a quaternion and some utility classes. In summary, the most
-
 
64
important features are
-
 
65
 
-
 
66
- A number of 2, 3 and 4 d vector classes.
-
 
67
- A number of Matrix classes.
-
 
68
- A Quaternion class.
-
 
69
- Some test programs.
-
 
70
- Works well with OpenGL.
15
 
71
 
16
CGLA is a collection of classes for linear algebra. All vectors and matrices 
-
 
17
are allocated on the static not using dynamic memory. Only dimensions 2,3,4 
-
 
18
are supported. There is also a quaternion class and other components. 
-
 
19
 
72
 
20
There is an introductory document discussing how to use CGLA.
73
There is a document on CGLA in the GEL documentation. The introduction
-
 
74
above was taken from that text.
21
*/
75
*/
22
 
76
 
23
/** \namespace Graphics
77
/** \namespace Graphics
24
		\brief The namespace for things related to (real time) rendering
78
		\brief The namespace for things related to (real time) rendering
25
 
79