quote:Original post by FReY
Yes, you using the term ''vector'' as the semantic definition of offset-vector from an origin.
The terminology I am using is the standard for Affine Space.
http://mathworld.wolfram.com/AffineSpace.html
quote:
If you really think about it, points are offset-vectors but just from the origin (our 3d space reference point).
I guess what you mean is that once you select a point as origin (which is an arbitrary selection), you can represent a point by the vector that you have to add to the origin to get it. True, but doesn''t change anything I said.
quote:
It is easier to conceptualize your rules written as follows:
- add 2 direction vectors, getting a direction vector
- multiply a direction vector by a scale, getting a scaled direction vector
- add a position-vector and a direction-vector, getting a position-vector
etc...
You can come up with a new language if you want, but "point" and "vector" are the standard ways of saying it. On top of that, I would not like calling points "position-vectors", because the word "vector" implies that those things can be added and multiplied by scalars, which is not true of points.
quote:
But I prefer to think of vectors as just arrays, not without any semantic meaning behind them.
I can see that. In practical terms, there are good arguments for and against having separate classes for points and vectors.
FOR:
- It more closely reflects the mathematical structures that we are using.
- It prevents some mistakes in compile time (adding two points will give an error, as that operation is undefined).
AGAINST:
- Expressions like "midpoint = .5*(point_A + point_B);" are not allowed, although the result is perfectly well defined. You would have to re-write that as "midpoint = point_A + .5*(point_B - point_A);", which is probably a little slower to evaluate.