41 m_OriginalPoints = mitk::PointSet::New();
43 mitk::Point3D projectionPoint;
44 projectionPoint.SetElement(0, toolAxis.GetElement(0) * 400);
45 projectionPoint.SetElement(1, toolAxis.GetElement(1) * 400);
46 projectionPoint.SetElement(2, toolAxis.GetElement(2) * 400);
47 m_OriginalPoints->InsertPoint(projectionPoint);
49 mitk::Point3D toolOrigin;
50 toolOrigin.SetElement(0, 0);
51 toolOrigin.SetElement(1, 0);
52 toolOrigin.SetElement(2, 0);
53 m_OriginalPoints->InsertPoint(toolOrigin);
57 mitk::Point3D axisPoint;
58 axisPoint.SetElement(0, toolAxis.GetElement(0) * -400);
59 axisPoint.SetElement(1, toolAxis.GetElement(1) * -400);
60 axisPoint.SetElement(2, toolAxis.GetElement(2) * -400);
61 m_OriginalPoints->InsertPoint(axisPoint);
98 if (m_SelectedInput == -1)
100 MITK_INFO <<
"No input has been selected in NeedleProjection Filter. Only forwarding NavigationData...";
105 if (! GetInput(m_SelectedInput)->IsDataValid())
return;
109 mitk::AffineTransform3D::Pointer refTrans = this->NavigationDataToTransform(this->GetInput(m_SelectedInput));
110 mitk::Geometry3D::Pointer refGeom = this->TransformToGeometry(refTrans);
113 m_OriginalPoints->SetGeometry(refGeom);
115 m_Projection->SetPoint(0, m_OriginalPoints->GetPoint(0));
116 m_Projection->SetPoint(1, m_OriginalPoints->GetPoint(1));
117 if (m_ShowToolAxis) { m_Projection->SetPoint(2, m_OriginalPoints->GetPoint(2)); }
120 if (this->m_TargetPlane.IsNull())
124 mitk::PlaneGeometry::Pointer plane = mitk::PlaneGeometry::New();
125 plane->SetIndexToWorldTransform(m_TargetPlane);
131 double p1[3] = {m_OriginalPoints->GetPoint(0)[0], m_OriginalPoints->GetPoint(0)[1], m_OriginalPoints->GetPoint(0)[2]};
132 double p2[3] = {m_OriginalPoints->GetPoint(1)[0], m_OriginalPoints->GetPoint(1)[1], m_OriginalPoints->GetPoint(1)[2]};
134 double center[3] = {plane->GetCenter()[0], plane->GetCenter()[1], plane->GetCenter()[2]};
135 double normal[3] = {plane->GetNormal()[0], plane->GetNormal()[1], plane->GetNormal()[2]};
137 vtkPlane::IntersectWithLine(p1, p2, normal, center, t, x);
144 mitk::Point3D intersection;
145 intersection[0] = x[0];
146 intersection[1] = x[1];
147 intersection[2] = x[2];
150 m_Projection->SetPoint(0, intersection);
157 mitk::AffineTransform3D::Pointer affineTransform = mitk::AffineTransform3D::New();
158 affineTransform->SetIdentity();
161 static itk::QuaternionRigidTransform<double>::Pointer quatTransform = itk::QuaternionRigidTransform<double>::New();
165 vnl_quaternion<double> doubleQuaternion(orientation.x(), orientation.y(), orientation.z(), orientation.r());
166 quatTransform->SetIdentity();
167 quatTransform->SetRotation(doubleQuaternion);
168 quatTransform->Modified();
172 static AffineTransform3D::MatrixType m;
173 mitk::TransferMatrix(quatTransform->GetMatrix(), m);
174 affineTransform->SetMatrix(m);
178 pos.SetVnlVector(nd->GetPosition().GetVnlVector());
179 affineTransform->SetOffset(pos);
181 affineTransform->Modified();
182 return affineTransform;
186 mitk::Geometry3D::Pointer g3d = mitk::Geometry3D::New();
187 mitk::ScalarType scale[] = {1.0, 1.0, 1.0};
188 g3d->SetSpacing(scale);
189 g3d->SetIndexToWorldTransform(transform);