Mercurial > hg > orthanc-stone
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); + } }