Skip to content

Commit fb64eb2

Browse files
zivyN-Dekker
authored andcommitted
BUG: VersorTransform did not update offset in SetParameters
1 parent f66267b commit fb64eb2

File tree

2 files changed

+30
-0
lines changed

2 files changed

+30
-0
lines changed

Modules/Core/Transform/include/itkVersorTransform.hxx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ VersorTransform<TParametersValueType>::SetParameters(const ParametersType & para
7373
itkDebugMacro(<< "Versor is now " << m_Versor);
7474

7575
this->ComputeMatrix();
76+
this->ComputeOffset();
7677

7778
// Modified is always called since we just have a pointer to the
7879
// parameters and cannot know if the parameters have changed.

Modules/Core/Transform/test/itkVersorTransformTest.cxx

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -469,6 +469,35 @@ itkVersorTransformTest(int, char *[])
469469
}
470470
}
471471

472+
{
473+
// Check that setting parameters updates the transformation offset
474+
t = TransformType::New();
475+
476+
const TransformType::InputPointType center = itk::MakePoint(2, 4, 8);
477+
478+
// 90 degree rotation around x axis
479+
ParametersType q(3);
480+
q[0] = itk::Math::sqrt1_2;
481+
q[1] = 0.0;
482+
q[2] = 0.0;
483+
484+
t->SetCenter(center);
485+
t->SetParameters(q);
486+
487+
const double expectedOffset[] = { 0.0, 12.0, 4.0 };
488+
489+
TransformType::OffsetType offset = t->GetOffset();
490+
for (unsigned int k = 0; k < 3; ++k)
491+
{
492+
if (std::fabs(expectedOffset[k] - offset[k]) > epsilon)
493+
{
494+
std::cerr << " [ FAILED ] " << std::endl;
495+
std::cerr << "Expected offset: " << expectedOffset << std::endl;
496+
std::cerr << "but got: " << offset << std::endl;
497+
return EXIT_FAILURE;
498+
}
499+
}
500+
}
472501
{
473502
TransformType::Pointer tInverse = TransformType::New();
474503
if (!t->GetInverse(tInverse))

0 commit comments

Comments
 (0)