
Hickerson, David A wrote:
I have done some of this in the library I wrote in 97.
I'd be curious to see that. I'd like a simple, common set of geom classes. The concept of these traits is a very interesting and clever one, but I don't think its useful in practice. You'd want a simple set of classes, and if they are generically useful then the conversion to library variants is simple: either construct a new temporary, or even a straight reinterpret_cast for performance. In particular, the basics are: 1.) Easy definition Preferably: class point2i; // descended from point2<int> void DoSomething(const point2i& mypoint); Alternatively: template<class T> class point2; typedef point2<int> mypoint2i; void DoSomething(const point2i& mypoint); 2.) Easy instantiation Definitely: point2i pos(1,2); Ideally (somehow): point2i pos2[2] = { { 3, 4 }, { 5, 6 } }; 3.) Very clear class layout So we can know when reinterpreting the object is possible. 4.) Minimum of templates and macros Want this to be compile-able across the board, and simple to understand. 5.) Basic methods in class Length(), LengthSq(), Normalise(), etc 6.) Set of algorithm functions to operate on these types Similar to STL, a separate group of functions. Having written all this, its hard to go past the MagicSoftware library. It defines many basic primitives and then a whole lot of useful operating functions. Hmm.. I should probably just use that in the future. :) Geoff