comparison UnitTestsSources/UnitTestsMain.cpp @ 689:93a8949a1ef7

VolumeImageGeometry::DetectSlice()
author Sebastien Jodogne <s.jodogne@gmail.com>
date Thu, 16 May 2019 18:33:57 +0200
parents ea1a5b963798
children c35e98d22764
comparison
equal deleted inserted replaced
685:ea1a5b963798 689:93a8949a1ef7
746 ASSERT_FLOAT_EQ(-1.0 / 2.0 + 10.0 * 1.0, p[0]); 746 ASSERT_FLOAT_EQ(-1.0 / 2.0 + 10.0 * 1.0, p[0]);
747 ASSERT_FLOAT_EQ(-2.0 / 2.0 + 20.0 * 2.0, p[1]); 747 ASSERT_FLOAT_EQ(-2.0 / 2.0 + 20.0 * 2.0, p[1]);
748 ASSERT_FLOAT_EQ(-3.0 / 2.0 + 30.0 * 3.0, p[2]); 748 ASSERT_FLOAT_EQ(-3.0 / 2.0 + 30.0 * 3.0, p[2]);
749 749
750 OrthancStone::VolumeProjection proj; 750 OrthancStone::VolumeProjection proj;
751 ASSERT_TRUE(g.DetectProjection(proj, g.GetAxialGeometry())); 751 ASSERT_TRUE(g.DetectProjection(proj, g.GetAxialGeometry().GetNormal()));
752 ASSERT_EQ(OrthancStone::VolumeProjection_Axial, proj); 752 ASSERT_EQ(OrthancStone::VolumeProjection_Axial, proj);
753 ASSERT_TRUE(g.DetectProjection(proj, g.GetCoronalGeometry())); 753 ASSERT_TRUE(g.DetectProjection(proj, g.GetCoronalGeometry().GetNormal()));
754 ASSERT_EQ(OrthancStone::VolumeProjection_Coronal, proj); 754 ASSERT_EQ(OrthancStone::VolumeProjection_Coronal, proj);
755 ASSERT_TRUE(g.DetectProjection(proj, g.GetSagittalGeometry())); 755 ASSERT_TRUE(g.DetectProjection(proj, g.GetSagittalGeometry().GetNormal()));
756 ASSERT_EQ(OrthancStone::VolumeProjection_Sagittal, proj); 756 ASSERT_EQ(OrthancStone::VolumeProjection_Sagittal, proj);
757
758 ASSERT_EQ(10u, g.GetProjectionWidth(OrthancStone::VolumeProjection_Axial));
759 ASSERT_EQ(20u, g.GetProjectionHeight(OrthancStone::VolumeProjection_Axial));
760 ASSERT_EQ(30u, g.GetProjectionDepth(OrthancStone::VolumeProjection_Axial));
761 ASSERT_EQ(10u, g.GetProjectionWidth(OrthancStone::VolumeProjection_Coronal));
762 ASSERT_EQ(30u, g.GetProjectionHeight(OrthancStone::VolumeProjection_Coronal));
763 ASSERT_EQ(20u, g.GetProjectionDepth(OrthancStone::VolumeProjection_Coronal));
764 ASSERT_EQ(20u, g.GetProjectionWidth(OrthancStone::VolumeProjection_Sagittal));
765 ASSERT_EQ(30u, g.GetProjectionHeight(OrthancStone::VolumeProjection_Sagittal));
766 ASSERT_EQ(10u, g.GetProjectionDepth(OrthancStone::VolumeProjection_Sagittal));
767
768 p = g.GetVoxelDimensions(OrthancStone::VolumeProjection_Axial);
769 ASSERT_EQ(3u, p.size());
770 ASSERT_FLOAT_EQ(1, p[0]);
771 ASSERT_FLOAT_EQ(2, p[1]);
772 ASSERT_FLOAT_EQ(3, p[2]);
773 p = g.GetVoxelDimensions(OrthancStone::VolumeProjection_Coronal);
774 ASSERT_EQ(3u, p.size());
775 ASSERT_FLOAT_EQ(1, p[0]);
776 ASSERT_FLOAT_EQ(3, p[1]);
777 ASSERT_FLOAT_EQ(2, p[2]);
778 p = g.GetVoxelDimensions(OrthancStone::VolumeProjection_Sagittal);
779 ASSERT_EQ(3u, p.size());
780 ASSERT_FLOAT_EQ(2, p[0]);
781 ASSERT_FLOAT_EQ(3, p[1]);
782 ASSERT_FLOAT_EQ(1, p[2]);
783
784 ASSERT_EQ(0, (int) OrthancStone::VolumeProjection_Axial);
785 ASSERT_EQ(1, (int) OrthancStone::VolumeProjection_Coronal);
786 ASSERT_EQ(2, (int) OrthancStone::VolumeProjection_Sagittal);
787
788 for (int p = 0; p < 3; p++)
789 {
790 OrthancStone::VolumeProjection projection = (OrthancStone::VolumeProjection) p;
791 const OrthancStone::CoordinateSystem3D& s = g.GetProjectionGeometry(projection);
792
793 for (unsigned int i = 0; i < g.GetProjectionDepth(projection); i++)
794 {
795 OrthancStone::CoordinateSystem3D plane(
796 s.GetOrigin() + static_cast<double>(i) * s.GetNormal() * g.GetVoxelDimensions(projection)[2],
797 s.GetAxisX(),
798 s.GetAxisY());
799
800 unsigned int slice;
801 OrthancStone::VolumeProjection q;
802 ASSERT_TRUE(g.DetectSlice(q, slice, plane));
803 ASSERT_EQ(projection, q);
804 ASSERT_EQ(i, slice);
805 }
806 }
757 } 807 }
758 808
759 int main(int argc, char **argv) 809 int main(int argc, char **argv)
760 { 810 {
761 Orthanc::Logging::Initialize(); 811 Orthanc::Logging::Initialize();