Boost logo

Boost :

From: David Abrahams (dave_at_[hidden])
Date: 2006-08-30 15:20:33

Janek Kozicki <janek_listy_at_[hidden]> writes:

> Hello,
> Not so long ago you have mentioned that you are working on a linear
> algebra library. I'm very interested in this topic, because I'm using
> such library in my project.

I'm sorry I've been so quiet...

> I have looked into the vault but couldn't find this library. Can we have
> a sneak peek?

I'm sorry, not yet. We have lots of code, but nothing worth showing
at the linear algebra level.

> Questions:
> 1. will your library provide functions useful when working with small
> vectors like: cross_product(), dot_product(), normalize() (scale vector
> so its length()==1), norm() (returns squared length), length(), etc... ?

Yes, and it will minimize the amount of temporary storage used, so it
should be very fast.

> 2. will your library allow Boost.Quaternions to be extended in a way that
> those two libraries together will be useful for geometrical rotations?

Probably. Well-designed generic libraries usually use concepts that
are not dependent on member functions, so it should be possible to
write the traits and other components that make that work.

> 3. will your library provide a way to solve equation Ax=b (A is matrix,
> b and x are vectors, and x is the unknown).


> The background for question 2 above:
> Author of Boost.Quaternions tried to extend the library with code
> that would allow geomtetrical rotations, but at that time only
> Boost.Ublas library was available. After some investigation he
> discovered that matrices and vectors from ublas are unsuitable for
> the task, and finally he gave up.
> Following functions would be needed:
> operator*(vector<3,T1>,quaternion<T2>) // most important

Is that an inner product, outer product, or pointwise multiplication?

> from_rotation_matrix(matrix<3,3,T>)

returning what?

> to_rotation_matrix()

Where's the argument? Is this supposed to be a member function? See
my 4th paragraph above.

> from_axis_angle(vector<3,T1> axis, T2 angle)

returning what?

> to_axis_angle()

Where's the argument?

> to_euler_angles()

Where's the argument?

> and few others. Similar functionality is already in boost vault:
> directory "Math - Numerics", file Quaternion.h
> Without quaternion rotations this linear algebra library would be
> pretty useless for me, so I hope it'll be there :)


Dave Abrahams
Boost Consulting

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