28 #include "SystemUtils.h" 80 constexpr
PMPoint() noexcept: x(0.0), y(0.0)
108 constexpr
PMPoint(
const SysPoint& p) noexcept: x(
double(SysPointH(p))), y(
double(SysPointV(p)))
179 return (otherPt - *
this).VectorLength();
189 if( ::ToDouble(x) == 0.)
191 if( ::ToDouble(y) == 0.)
193 return PMReal(std::sqrt(::ToDouble(x*x + y*y)));
210 {
return PMReal(2.0) * aligningPoint - *
this; }
303 { x += a.x; y += a.y; }
311 { x -= a.x; y -= a.y; }
378 constexpr
PMPoint kZeroPoint(0, 0);
390 return PMPoint(a.x + b.x, a.y + b.y);
399 return PMPoint(a.x - b.x, a.y - b.y);
417 return PMPoint(c * pt.x, c * pt.y);
426 return PMPoint(c * pt.x, c * pt.y);
435 return PMPoint(a.x * b.x, a.y * b.y);
444 return PMPoint(numer.x/denom.x, numer.y/denom.y);
453 return PMPoint(numer.x/denom, numer.y/denom);
463 return a.x == b.x && a.y == b.y;
472 return a.x != b.x || a.y != b.y;
481 SysPointH(sysPt) = ::ToFloat(::Floor(pt.x));
482 SysPointV(sysPt) = ::ToFloat(::Floor(pt.y));
484 SysPointH(sysPt) = ToInt32(pt.x);
485 SysPointV(sysPt) = ToInt32(pt.y);