26 #include "polygon_funcs.h"
31 void _Poly2Reorient::reorient(Polygon<2>& poly,
size_t skip)
const
33 size_t end = poly.numCorners();
36 case _WFMATH_POLY2REORIENT_NONE:
38 case _WFMATH_POLY2REORIENT_CLEAR_AXIS2:
39 for(
size_t i = 0; i != end; ++i) {
45 case _WFMATH_POLY2REORIENT_CLEAR_BOTH_AXES:
46 for(
size_t i = 0; i != end; ++i) {
53 case _WFMATH_POLY2REORIENT_MOVE_AXIS2_TO_AXIS1:
54 for(
size_t i = 0; i != end; ++i) {
57 (poly[i])[0] = (poly[i])[1];
61 case _WFMATH_POLY2REORIENT_SCALE1_CLEAR2:
62 for(
size_t i = 0; i != end; ++i) {
65 (poly[i])[0] *= m_scale;
76 bool Polygon<2>::isEqualTo(
const Polygon<2>& p,
CoordType epsilon)
const
78 if(m_points.size() != p.m_points.size())
81 Polygon<2>::theConstIter i1 = m_points.begin(), i2 = p.m_points.begin(),
85 if(!Equal(*i1, *i2, epsilon))
94 bool Polygon<2>::isValid()
const
96 for(theConstIter i = m_points.begin(); i != m_points.end(); ++i)
104 Polygon<2>& Polygon<2>::shift(
const Vector<2>& v)
106 for(theIter i = m_points.begin(); i != m_points.end(); ++i)
113 Polygon<2>& Polygon<2>::rotatePoint(
const RotMatrix<2>& m,
const Point<2>& p)
115 for(theIter i = m_points.begin(); i != m_points.end(); ++i)
122 Polygon<2> Polygon<2>::toParentCoords(
const Point<2>& origin,
123 const RotMatrix<2>& rotation)
const
126 out.m_points.resize(m_points.size());
127 for(
unsigned i = 0; i < m_points.size(); ++i)
128 out.m_points[i] = m_points[i].toParentCoords(origin, rotation);
133 Polygon<2> Polygon<2>::toParentCoords(
const AxisBox<2>& coords)
const
136 out.m_points.resize(m_points.size());
137 for(
unsigned i = 0; i < m_points.size(); ++i)
138 out.m_points[i] = m_points[i].toParentCoords(coords);
143 Polygon<2> Polygon<2>::toParentCoords(
const RotBox<2>& coords)
const
146 out.m_points.resize(m_points.size());
147 for(
unsigned i = 0; i < m_points.size(); ++i)
148 out.m_points[i] = m_points[i].toParentCoords(coords);
153 Polygon<2> Polygon<2>::toLocalCoords(
const Point<2>& origin,
154 const RotMatrix<2>& rotation)
const
157 out.m_points.resize(m_points.size());
158 for(
unsigned i = 0; i < m_points.size(); ++i)
159 out.m_points[i] = m_points[i].toLocalCoords(origin, rotation);
164 Polygon<2> Polygon<2>::toLocalCoords(
const AxisBox<2>& coords)
const
167 out.m_points.resize(m_points.size());
168 for(
unsigned i = 0; i < m_points.size(); ++i)
169 out.m_points[i] = m_points[i].toLocalCoords(coords);
174 Polygon<2> Polygon<2>::toLocalCoords(
const RotBox<2>& coords)
const
177 out.m_points.resize(m_points.size());
178 for(
unsigned i = 0; i < m_points.size(); ++i)
179 out.m_points[i] = m_points[i].toLocalCoords(coords);
183 template class Polygon<3>;
184 template class _Poly2Orient<3>;