Mercurial > hg > orthanc-stone
comparison Framework/Toolbox/GeometryToolbox.cpp @ 1477:5732edec7cbd
sorting frames in 3D
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Thu, 18 Jun 2020 15:48:59 +0200 |
parents | 30deba7bc8e2 |
children |
comparison
equal
deleted
inserted
replaced
1476:4db187d29731 | 1477:5732edec7cbd |
---|---|
532 r = (boost::numeric::ublas::identity_matrix<double>(3) + | 532 r = (boost::numeric::ublas::identity_matrix<double>(3) + |
533 k + | 533 k + |
534 boost::numeric::ublas::prod(k, k) / (1 + cosine)); | 534 boost::numeric::ublas::prod(k, k) / (1 + cosine)); |
535 #endif | 535 #endif |
536 } | 536 } |
537 | |
538 | |
539 void ComputeNormalFromCosines(Vector& normal, | |
540 const Vector& cosines) | |
541 { | |
542 if (cosines.size() != 6) | |
543 { | |
544 throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange); | |
545 } | |
546 else | |
547 { | |
548 normal.resize(3); | |
549 normal[0] = cosines[1] * cosines[5] - cosines[2] * cosines[4]; | |
550 normal[1] = cosines[2] * cosines[3] - cosines[0] * cosines[5]; | |
551 normal[2] = cosines[0] * cosines[4] - cosines[1] * cosines[3]; | |
552 } | |
553 } | |
554 | |
555 | |
556 bool ComputeNormal(Vector& normal, | |
557 const Orthanc::DicomMap& dicom) | |
558 { | |
559 Vector cosines; | |
560 if (LinearAlgebra::ParseVector(cosines, dicom, Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT) && | |
561 cosines.size() == 6) | |
562 { | |
563 ComputeNormalFromCosines(normal, cosines); | |
564 return true; | |
565 } | |
566 else | |
567 { | |
568 return false; | |
569 } | |
570 } | |
537 } | 571 } |
538 } | 572 } |