Mercurial > hg > orthanc-stone
comparison 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 |
comparison
equal
deleted
inserted
replaced
1649:d77618883551 | 1650:af312e145980 |
---|---|
26 #include "GeometryToolbox.h" | 26 #include "GeometryToolbox.h" |
27 | 27 |
28 #include <Logging.h> | 28 #include <Logging.h> |
29 #include <Toolbox.h> | 29 #include <Toolbox.h> |
30 #include <OrthancException.h> | 30 #include <OrthancException.h> |
31 | |
32 #include <boost/math/constants/constants.hpp> | |
33 | 31 |
34 namespace OrthancStone | 32 namespace OrthancStone |
35 { | 33 { |
36 void CoordinateSystem3D::CheckAndComputeNormal() | 34 void CoordinateSystem3D::CheckAndComputeNormal() |
37 { | 35 { |
354 LinearAlgebra::CrossProduct(axisY, axisX, normal); | 352 LinearAlgebra::CrossProduct(axisY, axisX, normal); |
355 LinearAlgebra::NormalizeVector(axisY); | 353 LinearAlgebra::NormalizeVector(axisY); |
356 | 354 |
357 return CoordinateSystem3D(origin, axisX, axisY); | 355 return CoordinateSystem3D(origin, axisX, axisY); |
358 } | 356 } |
357 | |
358 | |
359 CoordinateSystem3D CoordinateSystem3D::CreateFromThreePoints(const Vector& a, | |
360 const Vector& b, | |
361 const Vector& c) | |
362 { | |
363 Vector axisX = b - a; | |
364 LinearAlgebra::NormalizeVector(axisX); | |
365 | |
366 Vector normal; | |
367 LinearAlgebra::CrossProduct(normal, axisX, c - a); | |
368 | |
369 Vector axisY; | |
370 LinearAlgebra::CrossProduct(axisY, axisX, normal); | |
371 LinearAlgebra::NormalizeVector(axisY); | |
372 | |
373 return CoordinateSystem3D(a, axisX, axisY); | |
374 } | |
359 } | 375 } |