17 #ifndef _itkVersorRigid3DTransformOptimizer_txx
18 #define _itkVersorRigid3DTransformOptimizer_txx
21 #include "vnl/vnl_quaternion.h"
38 const ParametersType & currentPosition = this->GetCurrentPosition();
44 for(
unsigned int i=0; i<3; i++)
46 rightPart[i] = currentPosition[i];
51 currentRotation.
Set( rightPart );
57 axis[0] = transformedGradient[0];
58 axis[1] = transformedGradient[1];
59 axis[2] = transformedGradient[2];
70 gradientRotation.
Set( axis, factor * axis.
GetNorm() );
76 VersorType newRotation = currentRotation * gradientRotation;
80 newParameters[0] = newRotation.
GetX();
81 newParameters[1] = newRotation.
GetY();
82 newParameters[2] = newRotation.
GetZ();
86 for(
unsigned int k=3; k<6; k++)
88 newParameters[k] = currentPosition[k] + transformedGradient[k] * factor;
92 this->SetCurrentPosition( newParameters );