
-----Original Message----- From: boost-bounces@lists.boost.org [mailto:boost-bounces@lists.boost.org] On Behalf Of Michael Walter Sent: Sunday, November 07, 2004 2:52 AM To: boost@lists.boost.org Subject: Re: Re[6]: [boost] Re: Re: GUI Library Proposal for a Proposal
MW> a vector space: MW> difference :: E^n x E^n -> R^n I just do not get this. Why would you have a difference between two points in E^n defined as a point in R^n? Please read what I wrote: ".. to a vector in a vector space.". R^n is a *vector* space, hence the difference between two points in E^n is a *vector* in R^n.
The simplest way to say it is that point subtraction is not closed. It's no stranger than the fact that square root is not closed for reals.
Now, you can state the identification between points and vectors: E^n = R^n Again, in C++: typedef vector<n> point<n>;
If you are merely going to create a typedef, there's absolutely no reason to differentiate the two. Through the magic of typdef'ing, they would be semantically identical. Using your notation, E^n != R^n. They're both represented by n-tuples, but beyond that they are different. They have different operations. R^n has addition and subtraction, E^n has no addition operation and its subtraction isn't closed in E^n. R^n has inner and outer products, E^n does not. The above statement is true for affine and projective spaces. In a Grassmann space, points may be added together; however, points still do not have inner and outer products. In geometric algebra all the operations are defined and closed on all types. Somebody here wrote a GA library a year or two ago IIRC. -- Noah