
Boost : 
From: Theodore Papadopoulo (Theodore.Papadopoulo_at_[hidden])
Date: 20060323 04:51:42
On Wed, 20060322 at 21:52 +0100, Janek Kozicki wrote:
> yes, certainly. At first we should decide what entities should appear,
> how to name them, and how to sort them into namespaces, to begin with,
> that's my library:
>
>  vector2 +
>  vector3 +
>  vector4 +
>  matrix2 +
>  matrix3 +
>  matrix4 +
>  quaternion +
>  se3 +
>
> Other readers of this list are welcome to add more components and "vote"
> by placing '+' next to it. Of course class names are subject to another
> discussion :)
It is a little surprising to see that to begin with, it is not
geometrical concepts that you speak of but representations
(vectors,quaternions, matrices...). If there is a geometric library
(which I would appreciate a lot since like many others I had to craft my
own with some strenghts and some weaknesses), I would prefer to speak
about geometrical concepts first and their relationship, the
implementation in terms of vectors (which I approve wrt a an
implementation with a struct), matrices, ... should come after.
So I'll somewhat oppose to your proposal (and the following ones):
N is the dimension. namespace notation is just notational not a
proposal.
Euclidean::Point<N>
Euclidean::Line<N> // not very different from projective
line ??
Euclidean::SemiLine<N>
Euclidean::Segment<N>
Euclidean::Simplex<N>
Euclidean::Basis<N>
Affine:: same as Euclidean except maybe for Basis??
Projective::Point<N>
Projective::Line<N>
Projective::Basis<N>
SemiLines, Segments and Simplices are more complicated to define...
Constructors::{ most are obvious but some may not be... an Affine Point
from a Projective one is not always possible}.
Transformations:: {
Rotations, Translations, Scales, Affine, Euclidean, Projective,....
In my experience, this is the most difficult to properly design except
if one wants to pay always for the most general projective transform
even for the simpler ones.
}
Distances:: {
PointPoint, PointLine, PointSegment, LineSegment, LineLine, ....
and depends of the geometry and possibly on a "Metric".
}
Miscellanous:: {
BoundingBoxes,
Statistics, Volumes, Areas,
Adding Noise
....
}
Theo.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk