Boost logo

Boost :

From: Janek Kozicki (janek_listy_at_[hidden])
Date: 2006-06-13 15:13:43


Geoffrey Irving said: (by the date of Tue, 13 Jun 2006 09:30:39 -0700)

> I would suggest that instead of trying to make an extremely general vector
> class, it'd be better to make an extremely specific vector class, together
> with an extremely general way to other vector classes.
>
> Specifically, you can make vector3 (or vector<3>, perhaps) a
> straightforward single unit Euclidean vector. It can have L2 norms and
> L^inf norms and cross products and all the operations that are undefined
> for vectors with components of different units. Then we could define a
> vector space variant of boost::operators to convert any tuple-like type
> into a vector space type.

I like this idea very much. Not general, but specific, with underlyings
exportable to other classes.

> If you wanted phase space, you'd do something
> like this:
>
> template<class Q,class P>
> class phase_vector:public boost::vector_operators<phase_vector>;
<snip>

I'm afraid that this example is too simplified. phase_vector would need
the ability to be multiplied by matrix_with_units (weird name I know ;)
- but it's rather not a phase_matrix)

> and the vector_operators class would fill in scalar multiplication and
> addition-related operators. In my opinion, this would be far more
> useful than writing phase space as
>
> vector<m,m,m,kg_m_div_s,kg_m_div_s,kg_m_div_s>

indeed it would be more useful, once get right. But I have the
impression that it will be more difficult than getting vector<3> right,
or getting units system right :/

PS: I like vector<3> , I think that Andy can't argue with this name :>

In fact all this discuccion is great for deciding about a specification
of such a library. When specification is agreed upon, then implementation
should be easy enough :)

-- 
Janek Kozicki                                                         |

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