
Boost : 
From: james.jones_at_[hidden]
Date: 20060920 17:06:10
From: "Olivier Grant" <olivier.grant_at_[hidden]>
On 9/20/06, Walter Landry <wlandry_at_[hidden]> wrote:
> > This seems wrong. If I want to add a vector2d to a vector3d, then I
> > should have to do it manually. Otherwise, it should be a type error.
>
> it depends how you see the problem I suppose. A 2D vector is just a 3D
> vector with z == 0. A 3D vector is a 4D vector with w == 1. And so on by
> extension. Since these vector classes are not supposed to be used in a
> polymorphic way, each argument of a function call is wellknown by the user
>  or at least should be :)  so I would not raise an exception in the case
> of the use of two vectors with different dimensions.
But a 2D vector is NOT just a 3D vector with z = 0!! It might sit in a subspace of a 3D vector space, but not necessarily in the z=0 plane. It could just as easily be a 2D vector in the x  2y + 3z = 0 plane.
Certainly do it this way if you want to  maybe it makes perfect sense for your particular application. But I'd never want to see something like this standardized in BOOST. It just ain't right. :)
Also, if a 2D vector is a 3D vector with z=0, and a 3D vector is a 4D vector with w=1, "and so on by extension", then how would a 4D vector compare with a 5D vector? I don't get the extension. When you first posted your example, I assumed you'd made a typo when you set w=1, but now I think you did that on purpose. Why wouldn't w=0?

James Jones Administrative Data Mgmt.
Webmaster 375 Raritan Center Pkwy, Suite A
Data Architect Edison, NJ 08837
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk