1 #ifndef SEEN_Geom_TRANSFORMS_H
2 #define SEEN_Geom_TRANSFORMS_H
8 #define M_PI 3.14159265359;
35 inline operator Matrix()
const {
return Matrix(1, 0, 0, 1, vec[X], vec[Y]); }
37 inline Coord operator[](Dim2
const dim)
const {
return vec[dim]; }
38 inline Coord operator[](
unsigned const dim)
const {
return vec[dim]; }
39 inline bool operator==(
Translate const &o)
const {
return vec == o.vec; }
40 inline bool operator!=(
Translate const &o)
const {
return vec != o.vec; }
60 inline operator Matrix()
const {
return Matrix(vec[X], 0, 0, vec[Y], 0, 0); }
62 inline Coord operator[](Dim2
const d)
const {
return vec[d]; }
63 inline Coord operator[](
unsigned const d)
const {
return vec[d]; }
65 inline Coord &operator[](Dim2
const d) {
return vec[d]; }
66 inline Coord &operator[](
unsigned const d) {
return vec[d]; }
67 inline bool operator==(
Scale const &o)
const {
return vec == o.vec; }
68 inline bool operator!=(
Scale const &o)
const {
return vec != o.vec; }
70 inline Scale inverse()
const {
return Scale(1./vec[0], 1./vec[1]); }
73 inline Scale operator*(
Scale const &b)
const {
return Scale(vec[X]*b[X], vec[Y]*b[Y]); }
76 inline Point operator*(
Point const &p,
Scale const &s) {
return Point(p[X] * s[X], p[Y] * s[Y]); }
86 explicit Rotate(
Coord theta) : vec(std::cos(theta), std::sin(theta)) {}
89 inline operator Matrix()
const {
return Matrix(vec[X], vec[Y], vec[Y], -vec[X], 0, 0); }
91 inline Coord operator[](Dim2
const dim)
const {
return vec[dim]; }
92 inline Coord operator[](
unsigned const dim)
const {
return vec[dim]; }
93 inline bool operator==(
Rotate const &o)
const {
return vec == o.vec; }
94 inline bool operator!=(
Rotate const &o)
const {
return vec != o.vec; }
98 Coord rad = (deg / 180.0) * M_PI;
106 inline Point operator*(
Point const &v,
Rotate const &r) {
return v ^ r.vec; }
108 Matrix operator*(Translate
const &t, Scale
const &s);
109 Matrix operator*(Translate
const &t, Rotate
const &r);
111 Matrix operator*(Scale
const &s, Translate
const &t);
112 Matrix operator*(Scale
const &s, Matrix
const &m);
114 Matrix operator*(Matrix
const &m, Translate
const &t);
115 Matrix operator*(Matrix
const &m, Scale
const &s);
116 Matrix operator*(Matrix
const &m, Rotate
const &r);
117 Matrix operator*(Matrix
const &m1, Matrix
const &m2);
Definition: transforms.h:81
double Coord
Definition: coord.h:45
void normalize()
Definition: point.cpp:20
Definition: transforms.h:52
Matrix inverse() const
Definition: matrix.cpp:174
Cartesian point.
Definition: point.h:20
Definition: transforms.h:28