diff options
Diffstat (limited to 'src/2geom/transforms.cpp')
| -rw-r--r-- | src/2geom/transforms.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/2geom/transforms.cpp b/src/2geom/transforms.cpp index b8355cadc..65df9b22f 100644 --- a/src/2geom/transforms.cpp +++ b/src/2geom/transforms.cpp @@ -5,8 +5,9 @@ * Authors: * ? <?@?.?> * Krzysztof KosiĆski <tweenk.pl@gmail.com> + * Johan Engelen * - * Copyright ?-2009 Authors + * Copyright ?-2012 Authors * * This library is free software; you can redistribute it and/or * modify it either under the terms of the GNU Lesser General Public @@ -171,8 +172,16 @@ void check_transforms() m = z * t; m = z * s; m = z * r; m = z * h; m = z * v; m = z * z; } +Affine reflection(Point const & vector, Point const & origin) { + Geom::Point vec_norm = unit_vector(vector); + Affine mirror ( vec_norm[X]*vec_norm[X] - vec_norm[Y]*vec_norm[Y], 2 * vec_norm[X] * vec_norm[Y] , + 2 * vec_norm[X] * vec_norm[Y], vec_norm[Y]*vec_norm[Y] - vec_norm[X]*vec_norm[X] , + 0 ,0 ); + return Translate(-origin) * mirror * Translate(origin); } +} // namespace Geom + /* Local Variables: mode:c++ |
