
Kasak Sergey said: (by the date of Mon, 5 Mar 2007 03:45:25 +0300)
library contain vector(any static size), matrix 4x4, quaternion, plane(3D), sphere(3D), AABB(3D) and have little fuzzy logic support. This is little code snippet of vector class:
Hello Sergey, It is really great that you want to spent time hard working on such a library. There have been numerous discussions in the past. I can forward you all of them if you want (they sit in my inbox). Every time I was hoping that such library will finally be done. The problem is very difficult, because every person seems to have a unique idea about what this library should have, or shouldn't. Perhaps even the library name name should be different to make it clear how the scope of the library is restricted. I still remember my total surprise, when somebody asked why there is no *planned* support for conversions between cartesian, polar and cylindrical coordinates. Support for polylines, points, splines, boxes, tetrahedrons. Support for higher dimensions 4D, 5D, etc... It's a geometry after all, right? A quote from old thread, I proposed that such library should have only:
vector2 vector3 vector4 matrix2 matrix3 matrix4 quaternion se3
Someone (Geoffrey Irving) added:
vector1 matrix1 diagonal_matrix2 diagonal_matrix3 symmetric_matrix2 symmetric_matrix3 upper_triangular_matrix2 upper_triangular_matrix3
And finally someone (Theodore Papadopoulo) added:
Euclidean::Point<N> Euclidean::Line<N> 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...
see? And currently I think that se3 is not necessary. If someone needs it, he will create it from available components. So your first step is to very stricly define the scope if your library. It should be: 1. very small (or else, you will never write it), 2. and very coherent (or everyone will point out, why have this, and not that) Ad.2: For instance, why put into library the AABB and not K-dop ? Remove AABB then. Because adding K-dop means that you should add dozens of other bounding volume shapes. I'm not sure about sphere or plane too. What's the rationale? What is that fuzzy logic? wish you luck -- Janek Kozicki |