ExPolygon::XS->rotate()

This commit is contained in:
Alessandro Ranellucci 2013-07-11 18:55:51 +02:00
parent 1506907212
commit 87a5de193d
7 changed files with 86 additions and 19 deletions

View file

@ -21,6 +21,7 @@ class ExPolygon
SV* arrayref();
void scale(double factor);
void translate(double x, double y);
void _rotate(double angle, Point* center);
};
#define scale_polygon(poly, factor) \
@ -35,6 +36,14 @@ class ExPolygon
(*pit).y += y; \
}
inline void
rotate_polygon(Polygon* poly, double angle, Point* center)
{
for (Polygon::iterator pit = (*poly).begin(); pit != (*poly).end(); ++pit) { \
(*pit).rotate(angle, center);
}
}
void
ExPolygon::scale(double factor)
{
@ -53,6 +62,15 @@ ExPolygon::translate(double x, double y)
}
}
void
ExPolygon::_rotate(double angle, Point* center)
{
rotate_polygon(&contour, angle, center);
for (Polygons::iterator it = holes.begin(); it != holes.end(); ++it) {
rotate_polygon(&*it, angle, center);
}
}
void
perl2polygon(SV* poly_sv, Polygon& poly)
{