diff --git a/Modules/IGT/IGTFilters/mitkNavigationDataHandEyeCalibrationFilter.cpp b/Modules/IGT/IGTFilters/mitkNavigationDataHandEyeCalibrationFilter.cpp index 9a74c23790..6bfb4fa252 100644 --- a/Modules/IGT/IGTFilters/mitkNavigationDataHandEyeCalibrationFilter.cpp +++ b/Modules/IGT/IGTFilters/mitkNavigationDataHandEyeCalibrationFilter.cpp @@ -1,94 +1,94 @@ /*========================================================================= Program: Medical Imaging & Interaction Toolkit Language: C++ Date: $Date: $ Version: $Revision: $ Copyright (c) German Cancer Research Center, Division of Medical and Biological Informatics. All rights reserved. See MITKCopyright.txt or http://www.mitk.org/copyright.html for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the above copyright notices for more information. =========================================================================*/ #include "mitkNavigationDataHandEyeCalibrationFilter.h" #include "mitkDataStorage.h" mitk::NavigationDataHandEyeCalibrationFilter::NavigationDataHandEyeCalibrationFilter() : NavigationDataToNavigationDataFilter(), m_ObjectsToTransform(),m_HandEyeTransformations() { } mitk::NavigationDataHandEyeCalibrationFilter::~NavigationDataHandEyeCalibrationFilter() { m_ObjectsToTransform.clear(); m_HandEyeTransformations.clear(); } -void mitk::NavigationDataHandEyeCalibrationFilter::SetObjectToTransform(unsigned int index, BaseData::Pointer data) +void mitk::NavigationDataHandEyeCalibrationFilter::SetObjectToTransform(unsigned int index, BaseData* data) { m_ObjectsToTransform[index] = data; } void mitk::NavigationDataHandEyeCalibrationFilter::SetHandEyeTransformation(unsigned int index, QuaternionRigidTransformType::Pointer handEyeTransformation) { m_HandEyeTransformations[index] = handEyeTransformation; } void mitk::NavigationDataHandEyeCalibrationFilter::GenerateData() { /*get each input, lookup the associated BaseData and transfer the data*/ unsigned int numberOfInputs = this->GetNumberOfInputs(); for (unsigned int index=0; index < numberOfInputs; index++) { //get the needed variables const mitk::NavigationData* nd = this->GetInput(index); assert(nd); mitk::NavigationData* output = this->GetOutput(index); assert(output); //check if the data is valid if (!nd->IsDataValid()) { output->SetDataValid(false); continue; } output->Graft(nd); // copy all information from input to output // get the object to transform for current input index mitk::BaseData::Pointer objectToTransform = m_ObjectsToTransform[index]; if (!objectToTransform) { itkWarningMacro("NavigationDataHandEyeCalibrationFilter: No BaseData associated with input."); continue; } // get the transformation of the hand-eye calibration for current input index QuaternionRigidTransformType::Pointer handEyeTransform = m_HandEyeTransformations[index]; if (!handEyeTransform) { itkWarningMacro("NavigationDataHandEyeCalibrationFilter: No hand-eye transformation associated with input."); continue; } // get the transformation of the current navigation data QuaternionRigidTransformType::Pointer ndTransform = QuaternionRigidTransformType::New(); ndTransform->SetRotation(nd->GetOrientation()); ndTransform->SetOffset(nd->GetPosition().GetVectorFromOrigin()); // compose hand-eye transformation and transformation of NavigationData to final transformation to be applied mitk::AffineTransform3D::Pointer transform = mitk::AffineTransform3D::New(); transform->SetIdentity(); transform->Compose(handEyeTransform); transform->Compose(ndTransform); // apply final transformation to BaseData objectToTransform->GetGeometry()->SetIndexToWorldTransform(transform); objectToTransform->Modified(); // operation was successful, therefore data of output is valid. output->SetDataValid(true); } } diff --git a/Modules/IGT/IGTFilters/mitkNavigationDataHandEyeCalibrationFilter.h b/Modules/IGT/IGTFilters/mitkNavigationDataHandEyeCalibrationFilter.h index 578827c809..ca7072fab5 100644 --- a/Modules/IGT/IGTFilters/mitkNavigationDataHandEyeCalibrationFilter.h +++ b/Modules/IGT/IGTFilters/mitkNavigationDataHandEyeCalibrationFilter.h @@ -1,92 +1,92 @@ /*========================================================================= Program: Medical Imaging & Interaction Toolkit Language: C++ Date: $Date: $ Version: $Revision: $ Copyright (c) German Cancer Research Center, Division of Medical and Biological Informatics. All rights reserved. See MITKCopyright.txt or http://www.mitk.org/copyright.html for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the above copyright notices for more information. =========================================================================*/ #ifndef MITKNavigationDataHandEyeCalibrationFilter_H_HEADER_INCLUDED_ #define MITKNavigationDataHandEyeCalibrationFilter_H_HEADER_INCLUDED_ #include "mitkNavigationDataToNavigationDataFilter.h" #include "mitkNavigationData.h" #include "mitkBaseData.h" #include "itkQuaternionRigidTransform.h" namespace mitk { /** * \brief Class that reads NavigationData from input and transfers the information to the geometry of the associated BaseData * * Derived from NavigationDataToNavigationDataFilter * * \ingroup IGT */ class MitkIGT_EXPORT NavigationDataHandEyeCalibrationFilter : public NavigationDataToNavigationDataFilter { public: mitkClassMacro(NavigationDataHandEyeCalibrationFilter, NavigationDataToNavigationDataFilter); itkNewMacro(Self); /*! \brief transformation type for itk::QuaternionRigidTransforms */ typedef itk::QuaternionRigidTransform QuaternionRigidTransformType; /** * \brief Set the object that will be transformed to tracking coordinates using the current NavigationData * and the given transformation of the HandEyeCalibration * * \param index index corresponding to the NavigationData and hand-eye transformation to be applied to this BaseData * \param data BaseData to be associated to the index */ - void SetObjectToTransform(unsigned int index, BaseData::Pointer data); + void SetObjectToTransform(unsigned int index, BaseData* data); /** * \brief Set the transformation of the HandEyeCalibration that should be applied to the BaseData * with the current transformation of the Navigation Data * * \param index index corresponding to the NavigationData applied with this hand-eye transformation * \param handEyeTransform transformation of a previously performed hand-eye calibration corresponding to the NavigationData * at index */ void SetHandEyeTransformation(unsigned int index, QuaternionRigidTransformType::Pointer handEyeTransform); /* * \brief Transfer the information from the input to the associated BaseData */ virtual void GenerateData(); protected: /** * \brief Constructor **/ NavigationDataHandEyeCalibrationFilter(); /** * \brief Destructor **/ ~NavigationDataHandEyeCalibrationFilter(); /** * \brief Map of the BaseDatas that should be transformed. */ std::map m_ObjectsToTransform; /** * \brief Map of the hand-eye transformations that should be applied to the BaseDatas */ std::map m_HandEyeTransformations; }; } // namespace mitk #endif /* MITKNavigationDataHandEyeCalibrationFilter_H_HEADER_INCLUDED_ */