Boost logo

Boost :

From: Andy Little (andy_at_[hidden])
Date: 2006-09-23 05:13:15

Hi Martin,

I turned up this old post of yours:

It seems that what I'm doing here:

isn't anything new !

Andy Little

P.S. (I hope top posting is acceptable in this case)

"Martin Slater" <mslater_at_[hidden]> wrote in message
> 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;)


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:

Boost list run by bdawes at, gregod at, cpdaniel at, john at