
-----Original Message----- From: boost-bounces@lists.boost.org [mailto:boost-bounces@lists.boost.org] On Behalf Of Val Samko Sent: Saturday, November 06, 2004 7:12 AM To: Reece Dunn Subject: Re[2]: [boost] Re: Re: GUI Library Proposal for a Proposal
And vector in nD space is ... identifying a position in nD space. Just like a point. The difference is very vague and depends on the particular topic you are working on.
Point and vectors are two distinct elements. Both mathematics and computer graphics consider them two different beasts. From Mathworld: http://mathworld.wolfram.com/Point.html http://mathworld.wolfram.com/VectorSpace.html Mathematically speaking, a point in an n-space is a 0-dimensional entity. No vector in n-space has ever been described as a 0-dimensional entity - it's always of dimension n. Although both are identified by n coordinates, they are clearly different beasts. Although a point in 3D at (3,4,8) could be represented by the vector (3,4,8) from the origin, this doesn't make the point and the vector the same thing. In homogeneous coordinates, the two are not equal: (3,4,8,1) != (3,4,8,0). Not only is there a semantic difference, but there's also a representational difference, too. As such, they truly aren't the same thing.
Once again, we are talking about Cartesian coordinates, and in this particular case, point and vector are practically the same thing. In many books/articles, etc. points are treated exactly the same as vectors.
In almost all of the computer graphics literature I have read, points and vectors are not treated uniformly. Computer graphics uses a number of spaces: affine, projective, and Grassmann. I suggest reading the following brief introduction to the use of coordinate systems in computer graphics: http://ibm.tju.edu.cn/resource/ComputerGraphicsApplication/ComputerGraphicsA pplication/2000/g2/g2076.pdf The author has a longer paper on the matter available to ACM members in the organization's digital library in the Transactions on Graphics area.
Now, there might be completely different reasons for treating points and sizes differently in a C++ program, and that would be the type safety. But if we go in this direction, we might as well introduce a type for velocity, to be able to do something like this:
That's a red herring. -- Noah