36#include <boost/concept_check.hpp>
104 _c[0] *= s[
X];
_c[1] *= s[
Y];
105 _c[2] *= s[
X];
_c[3] *= s[
Y];
106 _c[4] *= s[
X];
_c[5] *= s[
Y];
120 _c[0] += h.
f *
_c[1];
121 _c[2] += h.
f *
_c[3];
122 _c[4] += h.
f *
_c[5];
128 _c[1] += v.f *
_c[0];
129 _c[3] += v.f *
_c[2];
130 _c[5] += v.f *
_c[4];
153 Coord c2xy = 2 * vn[
X] * vn[
Y];
154 Affine mirror ( cx2 - cy2, c2xy,
164#ifdef BOOST_CONCEPT_ASSERT
186 m = t * t; m = t * s; m = t * r; m = t * h; m = t * v; m = t * z;
187 m = s * t; m = s * s; m = s * r; m = s * h; m = s * v; m = s * z;
188 m = r * t; m = r * s; m = r * r; m = r * h; m = r * v; m = r * z;
189 m = h * t; m = h * s; m = h * r; m = h * h; m = h * v; m = h * z;
190 m = v * t; m = v * s; m = v * r; m = v * h; m = v * v; m = v * z;
191 m = z * t; m = z * s; m = z * r; m = z * h; m = z * v; m = z * z;
Cartesian point / 2D vector and related operations.
3x3 matrix representing an affine transformation.
Affine & operator*=(Affine const &m)
Combine this transformation with another one.
C width() const
Get the horizontal extent of the rectangle.
CPoint min() const
Get the corner of the rectangle with smallest coordinate values.
Two-dimensional point that doubles as a vector.
constexpr Coord y() const noexcept
constexpr Coord x() const noexcept
Axis aligned, non-empty rectangle.
Rotation around the origin.
static Affine around(Point const &p, Coord angle)
static Rotate identity()
Get a zero-degree rotation.
Rotate()=default
Construct a zero-degree rotation.
static Translate identity()
Get a translation that doesn't do anything.
Combination of a translation and uniform scale.
static Zoom map_rect(Rect const &old_r, Rect const &new_r)
Zoom between rectangles.
double Coord
Floating point type used to store coordinates.
Various utility functions.
Point unit_vector(Point const &a)