95 myFilter = mitk::NavigationDataObjectVisualizationFilter::New();
96 mitk::FillVector3D(initialPos1, 1.1, 2.2, 3.3);
97 mitk::FillVector3D(initialPos2, 5.0, 6.0, 7.0);
98 mitk::FillVector4D(initialOri1, 0.1, 0.2, 0.3, 0.4);
99 mitk::FillVector4D(initialOri2,0.5, 0.6, 0.7, 0.8);
102 initialValid1 =
true;
103 initialValid2 =
true;
106 nd1 = mitk::NavigationData::New();
107 nd1->SetPosition(initialPos1);
108 nd1->SetOrientation(initialOri1);
109 nd1->SetPositionAccuracy(initialError1);
110 nd1->SetDataValid(initialValid1);
112 nd2 = mitk::NavigationData::New();
113 nd2->SetPosition(initialPos2);
114 nd2->SetOrientation(initialOri2);
115 nd2->SetPositionAccuracy(initialError2);
116 nd2->SetDataValid(initialValid2);
119 myFilter->SetInput(nd1);
120 myFilter->SetInput(1, nd2);
121 output = myFilter->GetOutput();
126 mitkToolData1 = mitk::Surface::New();
127 mitkToolData2 = mitk::Surface::New();
130 mitkToolVectorData1.push_back(mitkToolData1.GetPointer());
131 mitkToolVectorData2.push_back(mitkToolData2.GetPointer());
134 mitkToolDataDummy = mitk::Surface::New();
135 mitkToolVectorDataDummy.push_back(mitkToolDataDummy.GetPointer());
137 mitk::FillVector3D(initialPosDummy, 8.8, 9.9, 10.10);
138 mitk::FillVector4D(initialOriDummy,1.1, 2.2, 3.3, 4.4);
139 initialErrorDummy=10.0;
140 initialValidDummy=
true;
141 ndDummy = mitk::NavigationData::New();
142 ndDummy->SetPosition(initialPosDummy);
143 ndDummy->SetOrientation(initialOriDummy);
144 ndDummy->SetPositionAccuracy(initialErrorDummy);
145 ndDummy->SetDataValid(initialValidDummy);
177 myFilter->SetRepresentationObject(0, mitkToolData1.GetPointer());
178 CPPUNIT_ASSERT_MESSAGE(
"Testing SetRepresentationObject()/GetRepresentationObject() node 1", myFilter->GetRepresentationObject(0) == mitkToolData1);
179 CPPUNIT_ASSERT_MESSAGE(
"Testing GetNumberOfToolRepresentations() after adding first tool", myFilter->GetNumberOfToolRepresentations() == 1);
181 myFilter->SetRepresentationObject(1, mitkToolData2.GetPointer());
182 CPPUNIT_ASSERT_MESSAGE(
"Testing SetRepresentationObject() node 2", myFilter->GetRepresentationObject(1) == mitkToolData2);
183 CPPUNIT_ASSERT_MESSAGE(
"Testing GetNumberOfToolRepresentations() after adding second tool", myFilter->GetNumberOfToolRepresentations() == 2);
185 CPPUNIT_ASSERT_MESSAGE(
"Testing GetRepresentationObject() node 1", myFilter->GetRepresentationObject(0) == mitkToolData1);
186 CPPUNIT_ASSERT_MESSAGE(
"Testing GetRepresentationObject() != Dummy node", myFilter->GetRepresentationObject(0) != mitkToolDataDummy);
187 CPPUNIT_ASSERT_MESSAGE(
"Testing GetRepresentationObject() node 2", myFilter->GetRepresentationObject(1) == mitkToolData2);
188 CPPUNIT_ASSERT_MESSAGE(
"Testing GetRepresentationObject() != Dummy node", myFilter->GetRepresentationObject(1) != mitkToolDataDummy);
189 CPPUNIT_ASSERT_MESSAGE(
"Testing GetRepresentationObject() with out of range parameter", myFilter->GetRepresentationObject(111) ==
nullptr);
195 myFilter->SetRepresentationObjects(0, mitkToolVectorData1);
196 CPPUNIT_ASSERT_MESSAGE(
"Testing SetRepresentationObject()/GetRepresentationObject() node 1", myFilter->GetAllRepresentationObjects(0) == mitkToolVectorData1);
197 CPPUNIT_ASSERT_MESSAGE(
"Testing GetNumberOfToolRepresentations() after adding first tool", myFilter->GetNumberOfToolRepresentations() == 1);
199 myFilter->SetRepresentationObjects(1, mitkToolVectorData2);
200 CPPUNIT_ASSERT_MESSAGE(
"Testing SetRepresentationObject() node 2", myFilter->GetAllRepresentationObjects(1) == mitkToolVectorData2);
201 CPPUNIT_ASSERT_MESSAGE(
"Testing GetNumberOfToolRepresentations() after adding second tool", myFilter->GetNumberOfToolRepresentations() == 2);
203 CPPUNIT_ASSERT_MESSAGE(
"Testing GetRepresentationObject() node 1", myFilter->GetAllRepresentationObjects(0) == mitkToolVectorData1);
204 CPPUNIT_ASSERT_MESSAGE(
"Testing GetRepresentationObject() != Dummy node", myFilter->GetAllRepresentationObjects(0) != mitkToolVectorDataDummy);
205 CPPUNIT_ASSERT_MESSAGE(
"Testing GetRepresentationObject() node 2", myFilter->GetAllRepresentationObjects(1) == mitkToolVectorData2);
206 CPPUNIT_ASSERT_MESSAGE(
"Testing GetRepresentationObject() != Dummy node", myFilter->GetAllRepresentationObjects(1) != mitkToolVectorDataDummy);
207 CPPUNIT_ASSERT_MESSAGE(
"Testing GetRepresentationObject() with out of range parameter", myFilter->GetAllRepresentationObjects(111).empty() ==
true);
211 myFilter->SetRepresentationObject(0, mitkToolData1.GetPointer());
212 myFilter->SetRepresentationObject(1, mitkToolData2.GetPointer());
216 affineTransform1 = mitkToolData1->GetGeometry()->GetIndexToWorldTransform();
217 offset1 = affineTransform1->GetOffset();
218 affineTransform2 = mitkToolData2->GetGeometry()->GetIndexToWorldTransform();
219 offset2 = affineTransform2->GetOffset();
221 m1 = affineTransform1->GetMatrix().GetVnlMatrix();
222 m2 = affineTransform2->GetMatrix().GetVnlMatrix();
225 CPPUNIT_ASSERT_MESSAGE(
"Testing Offset position 1", offset1.GetVnlVector()==initialPos1.GetVnlVector());
226 CPPUNIT_ASSERT_MESSAGE(
"Testing Offset position 2", offset2.GetVnlVector()==initialPos2.GetVnlVector());
228 MITK_TEST_OUTPUT( <<
"\n initOrient1="<<initialOri1<<
" affineTransform1->GetVnlMatrix():\n "<< m1);
229 MITK_TEST_OUTPUT( <<
"\n initOrient2=" << initialOri2 <<
" affineTransform2->GetVnlMatrix():\n " << m2);
233 myFilter->SetRepresentationObject(0, mitkToolData1.GetPointer());
234 myFilter->SetRepresentationObject(1, mitkToolData2.GetPointer());
238 affineTransform1 = mitkToolData1->GetGeometry()->GetIndexToWorldTransform();
239 offset1 = affineTransform1->GetOffset();
240 affineTransform2 = mitkToolData2->GetGeometry()->GetIndexToWorldTransform();
241 offset2 = affineTransform2->GetOffset();
243 m1 = affineTransform1->GetMatrix().GetVnlMatrix();
244 m2 = affineTransform2->GetMatrix().GetVnlMatrix();
248 myFilter->SetRepresentationObject(0, mitkToolData2.GetPointer());
249 CPPUNIT_ASSERT_MESSAGE(
"Twisting mitkToolData by using SetRepresentationObject() NavigationData 1 with ToolData 2", myFilter->GetRepresentationObject(0) == mitkToolData2);
250 CPPUNIT_ASSERT_MESSAGE(
"Testing GetNumberOfToolRepresentations() == 1", myFilter->GetNumberOfToolRepresentations() == 2);
252 myFilter->SetRepresentationObject(1, mitkToolData1.GetPointer());
253 CPPUNIT_ASSERT_MESSAGE(
"Twisting mitkToolData by using SetRepresentationObject() NavigationData 2 with ToolData 1", myFilter->GetRepresentationObject(1) == mitkToolData1);
254 CPPUNIT_ASSERT_MESSAGE(
"Testing GetNumberOfToolRepresentations() == 2", myFilter->GetNumberOfToolRepresentations() == 2);
257 CPPUNIT_ASSERT_MESSAGE(
"Testing switched BaseData of NavigationData 1 ", myFilter->GetRepresentationObject(0) == mitkToolData2);
258 CPPUNIT_ASSERT_MESSAGE(
"Testing GetRepresentationObject() != Dummy node", myFilter->GetRepresentationObject(0) != mitkToolDataDummy);
259 CPPUNIT_ASSERT_MESSAGE(
"Testing switched BaseData NavigationData 2", myFilter->GetRepresentationObject(1) == mitkToolData1);
260 CPPUNIT_ASSERT_MESSAGE(
"Testing GetRepresentationObject() != Dummy node", myFilter->GetRepresentationObject(1) != mitkToolDataDummy);
266 mitk::AffineTransform3D::Pointer affineTransform1Second = mitkToolData1->GetGeometry()->GetIndexToWorldTransform();
267 CPPUNIT_ASSERT_MESSAGE(
"Testing affineTransform1 after second update", affineTransform1 == affineTransform1Second);
268 mitk::AffineTransform3D::OutputVectorType offset1Second = affineTransform1->GetOffset();
269 CPPUNIT_ASSERT_MESSAGE(
"Testing offset1 after second update", offset1 == offset1Second);
270 CPPUNIT_ASSERT_MESSAGE(
"Testing offset1 equals first update", offset1Second.GetVnlVector()==offset1.GetVnlVector());
272 mitk::AffineTransform3D::Pointer affineTransform2Second = mitkToolData2->GetGeometry()->GetIndexToWorldTransform();
273 CPPUNIT_ASSERT_MESSAGE(
"Testing affineTransform2 after second update", affineTransform2 == affineTransform2Second);
274 mitk::AffineTransform3D::OutputVectorType offset2Second = affineTransform2->GetOffset();
275 CPPUNIT_ASSERT_MESSAGE(
"Testing offset2 after second update", offset2 == offset2Second);
276 CPPUNIT_ASSERT_MESSAGE(
"Testing offset2 equals first update", offset2Second.GetVnlVector()==offset2.GetVnlVector());
278 mitk::AffineTransform3D::MatrixType::InternalMatrixType m1Second= affineTransform1Second->GetMatrix().GetVnlMatrix();
279 MITK_TEST_OUTPUT( <<
"\n after second update initOrient1="<<initialOri1<<
" affineTransform1->GetVnlMatrix():\n "<< m1Second);
281 mitk::AffineTransform3D::MatrixType::InternalMatrixType m2Second= affineTransform2Second->GetMatrix().GetVnlMatrix();
282 MITK_TEST_OUTPUT( <<
"\n after second update initOrient2="<<initialOri2<<
" affineTransform2->GetVnlMatrix():\n "<< m2Second);
286 myFilter->SetRepresentationObject(0, mitkToolData1.GetPointer());
287 myFilter->SetRepresentationObject(1, mitkToolData2.GetPointer());
292 myFilter->SetInput(2,ndDummy);
293 CPPUNIT_ASSERT_MESSAGE(
"Adding new input and testing GetNumberOfInputs == 3", myFilter->GetNumberOfInputs() == 3);
294 CPPUNIT_ASSERT_MESSAGE(
"testing GetNumberOfOutputs == 3", myFilter->GetNumberOfOutputs() == 3);
295 CPPUNIT_ASSERT_MESSAGE(
"Testing Input == newly added input", myFilter->GetInput(2) == ndDummy);
296 CPPUNIT_ASSERT_MESSAGE(
"Testing GetOutput(2) != nullptr", myFilter->GetOutput(2) !=
nullptr);
297 CPPUNIT_ASSERT_MESSAGE(
"Testing GetOutput(2) != GetOutput(1)", myFilter->GetOutput(2) != myFilter->GetOutput(1));
298 myFilter->SetRepresentationObject(2, mitkToolDataDummy.GetPointer());
299 CPPUNIT_ASSERT_MESSAGE(
"Testing GetNumberOfToolRepresentations() after adding latest tool", myFilter->GetNumberOfToolRepresentations() == 3);
300 CPPUNIT_ASSERT_MESSAGE(
"Testing Set-/GetRepresentationObject() equals was set", myFilter->GetRepresentationObject(2) == mitkToolDataDummy);
306 mitk::AffineTransform3D::Pointer affineTransformDummy = mitkToolDataDummy->GetGeometry()->GetIndexToWorldTransform();
307 mitk::AffineTransform3D::OutputVectorType offsetDummy = affineTransformDummy->GetOffset();
308 CPPUNIT_ASSERT_MESSAGE(
"Testing Offset latest added tool", offsetDummy.GetVnlVector()==initialPosDummy.GetVnlVector());
310 mitk::AffineTransform3D::MatrixType::InternalMatrixType m1Latest= affineTransformDummy->GetMatrix().GetVnlMatrix();
311 MITK_TEST_OUTPUT( <<
"\n latest initOrient="<<initialOriDummy<<
" latest affineTransform->GetVnlMatrix():\n "<< m1Latest);
313 mitk::Surface::Pointer anotherSurface = mitk::Surface::New();
314 myFilter->SetRepresentationObject(0, anotherSurface.GetPointer());
315 CPPUNIT_ASSERT_MESSAGE(
"Overwriting BaseData index 0", myFilter->GetRepresentationObject(0) == anotherSurface);
320 myFilter->SetTransformPosition(0,
true);
321 CPPUNIT_ASSERT_MESSAGE(
"test Set/GetTransformPosition(0,true)", myFilter->GetTransformPosition(0)==
true);
322 myFilter->SetTransformPosition(1,
true);
323 CPPUNIT_ASSERT_MESSAGE(
"test Set/GetTransformPosition(1,true)", myFilter->GetTransformPosition(1)==
true);
324 myFilter->SetTransformPosition(2,
true);
325 CPPUNIT_ASSERT_MESSAGE(
"test Set/GetTransformPosition(2,true)", myFilter->GetTransformPosition(2)==
true);
326 myFilter->SetTransformPosition(3,
true);
327 CPPUNIT_ASSERT_MESSAGE(
"test Set/GetTransformPosition(3,true)", myFilter->GetTransformPosition(3)==
true);
329 myFilter->SetTransformPosition(0,
false);
330 CPPUNIT_ASSERT_MESSAGE(
"test Set/GetTransformPosition(0,false)", myFilter->GetTransformPosition(0)==
false);
331 myFilter->SetTransformPosition(1,
false);
332 CPPUNIT_ASSERT_MESSAGE(
"test Set/GetTransformPosition(1,false)", myFilter->GetTransformPosition(1)==
false);
333 myFilter->SetTransformPosition(2,
false);
334 CPPUNIT_ASSERT_MESSAGE(
"test Set/GetTransformPosition(2,false)", myFilter->GetTransformPosition(2)==
false);
335 myFilter->SetTransformPosition(3,
false);
336 CPPUNIT_ASSERT_MESSAGE(
"test Set/GetTransformPosition(3,false)", myFilter->GetTransformPosition(3)==
false);
341 myFilter->SetTransformOrientation(0,
true);
342 CPPUNIT_ASSERT_MESSAGE(
"test Set/GetTransformOrientation(0,true)", myFilter->GetTransformOrientation(0)==
true);
343 myFilter->SetTransformOrientation(1,
true);
344 CPPUNIT_ASSERT_MESSAGE(
"test Set/GetTransformOrientation(1,true)", myFilter->GetTransformOrientation(1)==
true);
345 myFilter->SetTransformOrientation(2,
true);
346 CPPUNIT_ASSERT_MESSAGE(
"test Set/GetTransformOrientation(2,true)", myFilter->GetTransformOrientation(2)==
true);
347 myFilter->SetTransformOrientation(3,
true);
348 CPPUNIT_ASSERT_MESSAGE(
"test Set/GetTransformOrientation(3,true)", myFilter->GetTransformOrientation(3)==
true);
350 myFilter->SetTransformOrientation(0,
false);
351 CPPUNIT_ASSERT_MESSAGE(
"test Set/GetTransformOrientation(0,false)", myFilter->GetTransformOrientation(0)==
false);
352 myFilter->SetTransformOrientation(1,
false);
353 CPPUNIT_ASSERT_MESSAGE(
"test Set/GetTransformOrientation(1,false)", myFilter->GetTransformOrientation(1)==
false);
354 myFilter->SetTransformOrientation(2,
false);
355 CPPUNIT_ASSERT_MESSAGE(
"test Set/GetTransformOrientation(2,false)", myFilter->GetTransformOrientation(2)==
false);
356 myFilter->SetTransformOrientation(3,
false);
357 CPPUNIT_ASSERT_MESSAGE(
"test Set/GetTransformOrientation(3,false)", myFilter->GetTransformOrientation(3)==
false);
362 myFilter->TransformOrientationOn(0);
363 CPPUNIT_ASSERT_MESSAGE(
"test TransformOrientationOn()", myFilter->GetTransformOrientation(0)==
true);
364 myFilter->TransformOrientationOff(0);
365 CPPUNIT_ASSERT_MESSAGE(
"test TransformOrientationOff()", myFilter->GetTransformOrientation(0)==
false);
366 myFilter->TransformOrientationOff(1);
367 CPPUNIT_ASSERT_MESSAGE(
"test TransformOrientationOff()", myFilter->GetTransformOrientation(1)==
false);
368 myFilter->TransformOrientationOn(1);
369 CPPUNIT_ASSERT_MESSAGE(
"test TransformOrientationOn()", myFilter->GetTransformOrientation(1)==
true);
370 myFilter->TransformOrientationOn(2);
371 CPPUNIT_ASSERT_MESSAGE(
"test TransformOrientationOn()", myFilter->GetTransformOrientation(2)==
true);
372 myFilter->TransformOrientationOff(2);
373 CPPUNIT_ASSERT_MESSAGE(
"test TransformOrientationOff()", myFilter->GetTransformOrientation(2)==
false);
374 myFilter->TransformOrientationOn(3);
375 CPPUNIT_ASSERT_MESSAGE(
"test TransformOrientationOn()", myFilter->GetTransformOrientation(3)==
true);
376 myFilter->TransformOrientationOff(3);
377 CPPUNIT_ASSERT_MESSAGE(
"test TransformOrientationOff()", myFilter->GetTransformOrientation(3)==
false);
379 myFilter->TransformPositionOn(0);
380 CPPUNIT_ASSERT_MESSAGE(
"test TransformPositionOn()", myFilter->GetTransformPosition(0)==
true);
381 myFilter->TransformPositionOff(0);
382 CPPUNIT_ASSERT_MESSAGE(
"test TransformPositionOff()", myFilter->GetTransformPosition(0)==
false);
383 myFilter->TransformPositionOff(1);
384 CPPUNIT_ASSERT_MESSAGE(
"test TransformPositionOff()", myFilter->GetTransformPosition(1)==
false);
385 myFilter->TransformPositionOn(1);
386 CPPUNIT_ASSERT_MESSAGE(
"test TransformPositionOn()", myFilter->GetTransformPosition(1)==
true);
387 myFilter->TransformPositionOn(2);
388 CPPUNIT_ASSERT_MESSAGE(
"test TransformPositionOn()", myFilter->GetTransformPosition(2)==
true);
389 myFilter->TransformPositionOff(2);
390 CPPUNIT_ASSERT_MESSAGE(
"test TransformPositionOff()", myFilter->GetTransformPosition(2)==
false);
391 myFilter->TransformPositionOn(3);
392 CPPUNIT_ASSERT_MESSAGE(
"test TransformPositionOn()", myFilter->GetTransformPosition(3)==
true);
393 myFilter->TransformPositionOff(3);
394 CPPUNIT_ASSERT_MESSAGE(
"test TransformPositionOff()", myFilter->GetTransformPosition(3)==
false);
400 mitk::FillVector3D(updatedPos1, 3.2, 1.5, 2.8);
401 mitk::FillVector3D(updatedPos2, 4.3, 5.2, 6.0);
402 mitk::FillVector3D(zero, 0.0, 0.0, 0.0);
406 updatedOri1.normalize();
407 updatedOri2.normalize();
409 nd1->SetPosition(updatedPos1);
410 nd1->SetOrientation(updatedOri1);
412 nd2->SetPosition(updatedPos2);
413 nd2->SetOrientation(updatedOri2);
415 myFilter->SetRepresentationObject(0, mitkToolData1.GetPointer());
416 myFilter->SetRepresentationObject(1, mitkToolData2.GetPointer());
418 myFilter->TransformPositionOn(0);
419 myFilter->TransformOrientationOff(0);
420 myFilter->TransformPositionOff(1);
421 myFilter->TransformOrientationOn(1);
426 mitk::AffineTransform3D::Pointer updatedAffineTransform1 = mitkToolData1->GetGeometry()->GetIndexToWorldTransform();
427 mitk::AffineTransform3D::OutputVectorType updatedOffset1 = updatedAffineTransform1->GetOffset();
428 CPPUNIT_ASSERT_MESSAGE(
"Testing updated position 1",
mitk::Equal(updatedOffset1.GetVnlVector(),updatedPos1.GetVnlVector()));
430 mitk::AffineTransform3D::Pointer updatedAffineTransform2 = mitkToolData2->GetGeometry()->GetIndexToWorldTransform();
431 mitk::AffineTransform3D::OutputVectorType updatedOffset2 = updatedAffineTransform2->GetOffset();
432 CPPUNIT_ASSERT_MESSAGE(
"Testing updated position 2",
mitk::Equal(updatedOffset2.GetVnlVector(),zero.GetVnlVector()));
434 mitk::AffineTransform3D::Pointer identityTransform = mitk::AffineTransform3D::New();
435 identityTransform->SetIdentity();
436 mitk::AffineTransform3D::MatrixType identityMatrix = identityTransform->GetMatrix();
437 mitk::AffineTransform3D::MatrixType uM1 = updatedAffineTransform1->GetMatrix();
439 CPPUNIT_ASSERT_MESSAGE(
"Testing updated orientation 1", mitk::MatrixEqualElementWise(uM1, identityMatrix));
441 mitk::AffineTransform3D::MatrixType::InternalMatrixType uM2 = updatedAffineTransform2->GetMatrix().GetVnlMatrix();
442 mitk::AffineTransform3D::MatrixType::InternalMatrixType updatedOriTransform2 = updatedOri2.rotation_matrix_transpose().transpose();
444 CPPUNIT_ASSERT_MESSAGE(
"Testing updated orientation 2", mitk::MatrixEqualElementWise(uM2,updatedOriTransform2));
449 myFilter->SetRepresentationObject(0,
nullptr);
450 mitkToolData2->GetGeometry()->SetIdentity();
452 CPPUNIT_ASSERT_MESSAGE(
"Test that the second repr object is updated correctly when the first repr object is invalid",
453 mitk::MatrixEqualElementWise(mitkToolData2->GetGeometry()->GetIndexToWorldTransform()->GetMatrix().GetVnlMatrix(),
454 updatedOri2.rotation_matrix_transpose().transpose()));