Boost logo

Boost :

From: Martin Slater (mslater_at_[hidden])
Date: 2005-06-02 06:37:46


> 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 naïve 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

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk