diff OrthancStone/Sources/Toolbox/CoordinateSystem3D.cpp @ 1650:af312e145980

more tests for CoordinateSystem3D
author Sebastien Jodogne <s.jodogne@gmail.com>
date Fri, 13 Nov 2020 10:44:11 +0100
parents 4a43106bc122
children 391c798e4dae
line wrap: on
line diff
--- a/OrthancStone/Sources/Toolbox/CoordinateSystem3D.cpp	Thu Nov 12 20:56:04 2020 +0100
+++ b/OrthancStone/Sources/Toolbox/CoordinateSystem3D.cpp	Fri Nov 13 10:44:11 2020 +0100
@@ -29,8 +29,6 @@
 #include <Toolbox.h>
 #include <OrthancException.h>
 
-#include <boost/math/constants/constants.hpp>
-
 namespace OrthancStone
 {
   void CoordinateSystem3D::CheckAndComputeNormal()
@@ -356,4 +354,22 @@
 
     return CoordinateSystem3D(origin, axisX, axisY);
   }
+
+
+  CoordinateSystem3D CoordinateSystem3D::CreateFromThreePoints(const Vector& a,
+                                                               const Vector& b,
+                                                               const Vector& c)
+  {
+    Vector axisX = b - a;
+    LinearAlgebra::NormalizeVector(axisX);
+    
+    Vector normal;
+    LinearAlgebra::CrossProduct(normal, axisX, c - a);
+
+    Vector axisY;
+    LinearAlgebra::CrossProduct(axisY, axisX, normal);
+    LinearAlgebra::NormalizeVector(axisY);
+
+    return CoordinateSystem3D(a, axisX, axisY);
+  }
 }