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