Hi Denis, The reason for BlVector2D is that we also have BlVector*3*D. In case of translation a Point (x@y) should be converted to (x,y,0). For scale it is converted as (x,y,1). You see, the same Point object has different meanings when it comes to different transformations.
Additionally, Point does not represent the intent correctly because all affine transformations involve vectors. Of course, we made Vectors polymorphic with points, so users can write: element translateBy: (20@20) instead of element translateBy: (BlVector x: 20 y: 20). - How often this vector will be constructed by hands in user code? It is > related to my question about comma message: is it really needed? In lineare algebra vectors are represented as (x, y, z). Beautiful! Cheers, Alex