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 }