
Hi Martin, I turned up this old post of yours: It seems that what I'm doing here: http://tinyurl.com/qp56p isn't anything new ! regards Andy Little P.S. (I hope top posting is acceptable in this case) "Martin Slater" <mslater@hellinc.net> wrote in message news:429EEF8A.5010309@hellinc.net...
This, to me, only betrays the fact that it is these other domain-specific API that need to be optimized for the domain's need (speed or whatever), and perhaps, ultimately, standardized, not a general tool such as quaternions and octonions.
I'll openly admit now I read about octonions only once (in a Scientific American article about string theory I believe) and have absolutely no idea about there usefulness for anyone;)
Quaternions, while inherently useful to, say, games, are not limited to that domain and, beyond the difficulty of trying to standardize APIs for non-standardized and competing libraries, I believe it would be wrong to not standardize them or specialize early for one problem domain. It would be akin to not standardizing the complex numbers in C++ because no direct link is provided to plane rotations, or including a link to a specific non-standardized API in the standard for C++ complex numbers.
Absolutely, the only point I was making is that without providing all the other bits that go along with quaternions people (within this industry) with have to turn to another library to provide them and that library will undoubtably offer quaternions as well making it likely they will be used in preference to the potentially standardised ones if only for api consistency.
I might add that extant libraries only code well-know solutions to problems. I started this work in part because a particular problem had to be solved (interpolation of orientation under constraint, which has real economic meaning for the companies involved). The problem has been solved but has not been officially published (nor sold, for various
This is one of those areas of a lot of research from the graphics guys in solving problems relating to animation and IK but this is not my area of expertise .
reasons), so does nor appear (AFAIK, it's been quite a few years since I did that) in libraries today. Using a quaternion library independent from any existing 3D library enables me to solve the problem for all of them. Specializing for one would leave out the others. This is just an example, there are other real problems waiting to be solved, and the right level of abstraction to solve them is not the existing 3D libraries (properly speaking the "proper level of abstraction" is the mathematical realm, but what we propose are "incarnation" of the objects
Absolutely, I was only talking of the industry that I'm a part of and have some knowledge about.
we use). While we are dealing with examples, a related problem, dealing with speed, is *quickly* finding *many* very close rotations, say in the plane, with a lessened emphasis on precision. A nave way of doing this with incrementing the angle and using transcendental functions usually is not the best way to proceed. Again, thinking within the box of a given 3D API is not the most useful way, unless this API provides us with good incarnations of mathematical objects. One could at least hope that (in the best of worlds...) the standardization process would produce something sensible in that regard.
I'm not convinced either that the general 3d toolsets out there are the best way. Generalised matrices can be blunt tools and I have experimented in the past with having seperate but related matrices, basis' , coordinate systems, vectors, points to allow more saftey in the actual coding and remove a whole class of errors from doing non-sensicle things with these mathmatical objects. Alas this was quite a few years ago and my skills were not up to producing something I was happy with but it seems it could be a natural progression of with the work mentioned on this list (started by abrahams and gurtovoy?) on dimensional analysis through metaprogramming (ie enforcing the rules through types).
It is an open secret that the lack of a de jure standard C++ way of representing elementary low-dimensional objects such as rotations is hurting us all (from GUI designers to physicists). Proposals for such surface here from time to time, but none has gone so far as to be submitted for review, IIRC, which IMHO is a shame.
Personally I would love to see all of what I suggested earlier standardised and quaternions / octonions could be a very good starting point for this if only to set a precedent but I am pessamistic about its potential uptake by the games community.
What I believe would be good would be to standardize the quaternions and octonions on their own, provide non-normative (but efficient) links with specific APIs (in a way similar to the example link I provide with the library), or at least with a few of them to avoid the kind of situation we are in w.r.t. Unicode, and when the other domains have their API standardized as well, finally provide standard links (faster than w.r.t. Unicode ;-) ).
Ah a standadised graphics API, would be beautiful but with Microsoft deciding to not follow the OpenGL standard many years ago and go their own way for their own reasons this is not much beyond a pipe dream at the moment;) Martin -- No virus found in this outgoing message. Checked by AVG Anti-Virus. Version: 7.0.322 / Virus Database: 267.4.0 - Release Date: 1/06/2005 _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost