So for sure we need a few additional concepts, i.e. Vector, Matrix, Quaternion.
So then quaternion_type<point> and matrix_type<point>? Would this always return square matrix?
we could just put other concepts aside and implement some nice transformation strategies for bg::transform().
Btw, should the strategy always have input geometries as template parameters? If not, calling bg::transform() could be simplified, e.g.:
bg::transform(poly1, poly2, bg::strategy::make_translation(v_or_p));