Mercurial > hg > orthanc-stone
diff Framework/Scene2D/ScenePoint2D.h @ 901:240359ab1651
Added Dot + magnitude + couple helpers in ScenePoint2D + Added ability to target several sets of 5-layer text packs stored in LayerHolder
author | Benjamin Golinvaux <bgo@osimis.io> |
---|---|
date | Wed, 17 Jul 2019 09:39:51 +0200 |
parents | c71ef52602a0 |
children | 59906485896f 2d8ab34c8c91 |
line wrap: on
line diff
--- a/Framework/Scene2D/ScenePoint2D.h Tue Jul 16 12:41:18 2019 +0200 +++ b/Framework/Scene2D/ScenePoint2D.h Wed Jul 17 09:39:51 2019 +0200 @@ -91,17 +91,51 @@ return v; } + const ScenePoint2D operator/(double a) const + { + ScenePoint2D v; + v.x_ = x_ / a; + v.y_ = y_ / a; + + return v; + } + + static void MidPoint(ScenePoint2D& result, const ScenePoint2D& a, const ScenePoint2D& b) + { + result.x_ = 0.5 * (a.x_ + b.x_); + result.y_ = 0.5 * (a.y_ + b.y_); + } + static double Dot(const ScenePoint2D& a, const ScenePoint2D& b) { return a.x_ * b.x_ + a.y_ * b.y_; } + static double SquaredMagnitude(const ScenePoint2D& v) + { + return v.x_ * v.x_ + v.y_ * v.y_; + } + + static double Magnitude(const ScenePoint2D& v) + { + double squaredMagnitude = SquaredMagnitude(v); + if (LinearAlgebra::IsCloseToZero(squaredMagnitude)) + return 0.0; + return sqrt(squaredMagnitude); + } + static double SquaredDistancePtPt(const ScenePoint2D& a, const ScenePoint2D& b) { ScenePoint2D n = b - a; return Dot(n, n); } + static double DistancePtPt(const ScenePoint2D& a, const ScenePoint2D& b) + { + double squaredDist = SquaredDistancePtPt(a, b); + return sqrt(squaredDist); + } + /** Distance from point p to [a,b] segment