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");
38 mitk::NodeDisplacementFilter::Pointer nodeDisplacementFilter = mitk::NodeDisplacementFilter::New();
39 nodeDisplacementFilter->SetInput(nd0);
40 nodeDisplacementFilter->SelectInput(0);
44 mitk::DataNode::Pointer node = mitk::DataNode::New();
45 mitk::Surface::Pointer surface = mitk::Surface::New();
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.");
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.")
58 mitk::FillVector3D(movedPos, -3.0, 6.0, 3.23);
59 nd0->SetPosition(movedPos);
61 nodeDisplacementFilter->Modified();
62 nodeDisplacementFilter->Update();
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.")
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.");
79 nd0->SetOrientation(rotation);
81 mitk::AffineTransform3D::Pointer navigationDataTransform = nd0->GetAffineTransform3D();
83 nodeDisplacementFilter->Modified();
84 nodeDisplacementFilter->Update();
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.")