From 198cc19c67f269515089ee2a412a2f530ea4a52b Mon Sep 17 00:00:00 2001 From: Hans Johnson Date: Wed, 28 Feb 2024 11:07:37 -0600 Subject: [PATCH] ENH: Add test demonstrating change in fixed paramers When applying SetIdentity(), the fixed parameters should not be modified. The fixed paramers represent the stationary component of the transform and setting the transform back to an identity should not modify the stationary components. --- .../test/itkEuler3DTransformTest.cxx | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/Modules/Core/Transform/test/itkEuler3DTransformTest.cxx b/Modules/Core/Transform/test/itkEuler3DTransformTest.cxx index 103fd795d554..48de73ce972e 100644 --- a/Modules/Core/Transform/test/itkEuler3DTransformTest.cxx +++ b/Modules/Core/Transform/test/itkEuler3DTransformTest.cxx @@ -34,10 +34,34 @@ itkEuler3DTransformTest(int, char *[]) using EulerTransformType = itk::Euler3DTransform; auto eulerTransform = EulerTransformType::New(); + // Testing preservation of the center of rotation + auto eulerTransformWithCenter = EulerTransformType::New(); + const itk::Point centerOfRotation({ 200, 400, 300 }); + eulerTransformWithCenter->SetCenter(centerOfRotation); + std::cout << "Testing Set/GetCenter(): "; + if (eulerTransformWithCenter->GetCenter() != centerOfRotation) + { + std::cerr << "Error in Set/GetCenter() " << std::endl; + return EXIT_FAILURE; + } + std::cout << "[ PASSED ]" << std::endl; + std::cout << "Testing GetCenter() after SetIdentity(): "; + eulerTransformWithCenter->SetIdentity(); + // The center of rotation should be preserved when the transform is set to identity. + // Reseting a transform to identity should not affect the FixedParameters. + std::cout << "Testing Set/GetCenter(): " << std::endl; + if (eulerTransformWithCenter->GetCenter() != centerOfRotation) + { + std::cerr << "Error in GetCenter() after calling SetIdentity() " << std::endl; + return EXIT_FAILURE; + } + std::cout << "[ PASSED ]" << std::endl; + // Testing Identity std::cout << "Testing identity transform: "; eulerTransform->SetIdentity(); + EulerTransformType::OffsetType offset = eulerTransform->GetOffset(); if (offset[0] != 0.0 || offset[1] != 0.0 || offset[2] != 0.0) {