
On 10/12/05, Noah Stein <noah@acm.org> wrote:
The grassman_point idea could be layered cleanly on top of a vector-only or even a vector/point solution.
This is also what I have decided. Sorry to Andy, as the quantity_points still will not have operator + defined. I knew I would have some disagreement, but this really is something that I've already given much thought to and is why I hoped to get a version out before talking about this. Deane has reiterated everything that I have talked about, and I am thankful for that. I firmly believe that this is the best decision and you're going to have a very hard time swaying me. If you want addition of points in affine space, then don't use points, use the concept of "position vectors". This is not some new restriction that I am just choosing to make for the library, this is just how geometry is and for good reasons, and I'm not going to change standard mathematics because you want addition of points. The concept of addition of points simply does not make sense on its own in affine space -- it's just an implementation detail of higher-level functionality such as barycentric combinations. Because of this, operator + is not going to be overloaded, and in the rare cases that you need the functionality of componentwise addition of points in order to form other high-level functions, you can use the componentwise_add function, again, whose name is long on purpose since it generally should not be used except as implementation details. If you find yourself having to use point addition in affine space very often, then you are probably just improperly using points instead of vectors or are missing a level of abstraction. As I said, I could always use expression templates to only allow expressions with point addition and other operations when the expression follows the form of barycentric combinations, but that would really be pushing it, and is completely unecessary since I'm already providing barycentric combination functions. I'm not going to make this library logically incorrect by directly supporting raw addition of points in affine space. -- -Matt Calabrese