MITK-IGT
IGT Extension of MITK
Loading...
Searching...
No Matches
mitkNodeDisplacementFilterTest.cpp
Go to the documentation of this file.
1/*============================================================================
2
3The Medical Imaging Interaction Toolkit (MITK)
4
5Copyright (c) German Cancer Research Center (DKFZ)
6All rights reserved.
7
8Use of this source code is governed by a 3-clause BSD license that can be
9found in the LICENSE file.
10
11============================================================================*/
12
13#include <mitkTestingMacros.h>
15#include "mitkPointSet.h"
16#include "mitkSurface.h"
17
19{
20public:
21
22 /*
23 * \brief Returns a reference string for serialized calibrations.
24 */
25
27 {
28 /* create helper objects: navigation data with data valid */
30 mitk::FillVector3D(initialPos, 1.0, 2.0, 3.0);
31 mitk::ScalarType initialError(22.22);
32 mitk::NavigationData::Pointer nd0 = mitk::NavigationData::New();
33 nd0->SetPosition(initialPos);
34 nd0->SetPositionAccuracy(initialError);
35 nd0->SetDataValid(true);
36 nd0->SetName("testName");
37
38 mitk::NodeDisplacementFilter::Pointer nodeDisplacementFilter = mitk::NodeDisplacementFilter::New();
39 nodeDisplacementFilter->SetInput(nd0);
40 nodeDisplacementFilter->SelectInput(0);
41
42
43 // test translation
44 mitk::DataNode::Pointer node = mitk::DataNode::New();
45 mitk::Surface::Pointer surface = mitk::Surface::New();
46 mitk::Point3D origin;
47 mitk::FillVector3D(origin, 5.0, 3.0, 6.0);
48 surface->GetGeometry()->SetOrigin(origin);
49 node->SetData(surface->Clone());
50 MITK_TEST_CONDITION(nodeDisplacementFilter->AddNode(node), "Adding node to node displacement filter.");
51
52 nodeDisplacementFilter->Modified();
53 nodeDisplacementFilter->Update();
54 MITK_TEST_CONDITION(mitk::Equal(*(surface->GetGeometry()), *(node->GetData()->GetGeometry()), mitk::eps, true),
55 "Geometry must not have changed as the reference point is still at the same position.")
56
58 mitk::FillVector3D(movedPos, -3.0, 6.0, 3.23);
59 nd0->SetPosition(movedPos);
60
61 nodeDisplacementFilter->Modified();
62 nodeDisplacementFilter->Update();
63
64 surface->GetGeometry()->SetOrigin(surface->GetGeometry()->GetOrigin()+(movedPos-initialPos));
65 MITK_TEST_CONDITION(mitk::Equal(*(surface->GetGeometry()), *(node->GetData()->GetGeometry()), mitk::eps, true),
66 "Node must have moved accordingly to the reference node.")
67
68
69 // test rotation
70 mitk::DataNode::Pointer node2 = mitk::DataNode::New();
71 mitk::Surface::Pointer surface2 = mitk::Surface::New();
72 mitk::FillVector3D(origin, 0, 0, 0);
73 surface->GetGeometry()->SetOrigin(origin);
74 node2->SetData(surface2->Clone());
75 MITK_TEST_CONDITION(nodeDisplacementFilter->AddNode(node2), "Adding second node to node displacement filter.");
76
77
78 mitk::NavigationData::OrientationType rotation(0.1, 0.2, 0.3, 0.4);
79 nd0->SetOrientation(rotation);
80
81 mitk::AffineTransform3D::Pointer navigationDataTransform = nd0->GetAffineTransform3D();
82
83 nodeDisplacementFilter->Modified();
84 nodeDisplacementFilter->Update();
85
86 MITK_TEST_CONDITION(mitk::Equal(*navigationDataTransform, *(node2->GetData()->GetGeometry()->GetIndexToWorldTransform()), mitk::eps, true),
87 "Rotation of the node must be the same as the rotation of the navigation data.")
88 }
89};
90
94int mitkNodeDisplacementFilterTest(int /* argc */, char* /*argv*/[])
95{
96 MITK_TEST_BEGIN("mitkNodeDisplacementFilterTest");
97
99
100 MITK_TEST_END();
101}
mitk::Quaternion OrientationType
Type that holds the orientation part of the tracking data.
mitk::Point3D PositionType
Type that holds the position part of the tracking data.
int mitkNodeDisplacementFilterTest(int, char *[])
MITKIGTBASE_EXPORT bool Equal(const mitk::NavigationData &leftHandSide, const mitk::NavigationData &rightHandSide, ScalarType eps=mitk::eps, bool verbose=false)
Equal A function comparing two navigation data objects for beeing equal in meta- and imagedata.