38 #include "vtkImageData.h"
50 mDataManager = dataManager;
64 std::vector<CoordinateSystem> retval;
77 std::map<QString, DataPtr> data = mDataManager->getData();
78 for (std::map<QString, DataPtr>::iterator i=data.begin(); i!=data.end(); ++i)
84 std::map<QString, ToolPtr> tools = mTrackingService->getTools();
85 for (std::map<QString, ToolPtr>::iterator i=tools.begin(); i!=tools.end(); ++i)
97 std::map<QString, QString> retval;
99 retval[
"active"] =
"active";
101 std::map<QString, DataPtr> data = mDataManager->getData();
102 for (std::map<QString, DataPtr>::iterator i=data.begin(); i!=data.end(); ++i)
104 retval[i->second->getSpace()] = i->second->getName();
107 std::map<QString, ToolPtr> tools = mTrackingService->getTools();
108 for (std::map<QString, ToolPtr>::iterator i=tools.begin(); i!=tools.end(); ++i)
110 retval[i->first] = i->second->getName();
119 return toMfrom.coord(
Vector3D(0,0,0));
124 QString uid = tool->getUid();
134 ToolPtr tool = mTrackingService->getActiveTool();
136 return Transform3D::Identity();
138 COORDINATE_SYSTEM target;
152 Transform3D to_M_from = get_rMfrom(to).inv() * get_rMfrom(from);
209 ToolPtr refTool = mTrackingService->getReferenceTool();
210 if (refTool && (tool == refTool))
228 ToolPtr refTool = mTrackingService->getReferenceTool();
229 if (refTool && (tool == refTool))
267 return Transform3D::Identity();
270 Transform3D SpaceProviderImpl::get_rMd(QString uid)
272 if (!mDataManager->isPatientValid())
273 return Transform3D::Identity();
275 DataPtr data = mDataManager->getData(uid);
277 if (!data && uid==
"active")
278 data = mDataManager->getActiveImage();
282 reportWarning(
"Could not find data with uid: "+uid+
". Can not find transform to unknown coordinate system, returning identity!");
283 return Transform3D::Identity();
285 return data->get_rMd();
288 Transform3D SpaceProviderImpl::get_rMdv(QString uid)
290 if (!mDataManager->isPatientValid())
291 return Transform3D::Identity();
293 DataPtr data = mDataManager->getData(uid);
295 if (!data && uid==
"active")
296 data = mDataManager->getActiveImage();
300 reportWarning(
"Could not find data with uid: "+uid+
". Can not find transform to unknown coordinate system, returning identity!");
301 return Transform3D::Identity();
304 ImagePtr image = boost::dynamic_pointer_cast<Image>(data);
306 return data->get_rMd();
316 Transform3D SpaceProviderImpl::get_rMt(QString uid)
318 ToolPtr tool = mTrackingService->getTool(uid);
320 if (!tool && uid==
"active")
321 tool = mTrackingService->getActiveTool();
325 reportWarning(
"Could not find tool with uid: "+uid+
". Can not find transform to unknown coordinate system, returning identity!");
326 return Transform3D::Identity();
328 return get_rMpr() * tool->get_prMt();
331 Transform3D SpaceProviderImpl::get_rMto(QString uid)
333 ToolPtr tool = mTrackingService->getTool(uid);
335 if (!tool && uid==
"active")
336 tool = mTrackingService->getActiveTool();
340 reportWarning(
"Could not find tool with uid: "+uid+
". Can not find transform to unknown coordinate system, returning identity!");
341 return Transform3D::Identity();
344 double offset = tool->getTooltipOffset();
346 return get_rMpr() * tool->get_prMt() * tMto;
349 Transform3D SpaceProviderImpl::get_rMs(QString uid)
351 ToolPtr tool = mTrackingService->getTool(uid);
353 if (!tool && uid==
"active")
354 tool = mTrackingService->getActiveTool();
358 reportWarning(
"Could not find tool with uid: "+uid+
". Can not find transform to unknown coordinate system, returning identity!");
359 return Transform3D::Identity();
362 Transform3D tMs = tool->getCalibration_sMt().inv();
virtual CoordinateSystem getTO(ToolPtr tool)
tool offset coordinate system
virtual Transform3D get_toMfrom(CoordinateSystem from, CoordinateSystem to)
to_M_from
virtual CoordinateSystem getS(ToolPtr tool)
tools sensor coordinate system
void dataAddedOrRemoved()
virtual CoordinateSystem getT(ToolPtr tool)
tools coordinate system
Transform3D createTransformScale(const Vector3D &scale_)
Transform3D Transform3D
Transform3D is a representation of an affine 3D transform.
boost::shared_ptr< class TrackingService > TrackingServicePtr
csSENSOR
a tools sensor space (s)
boost::shared_ptr< class Image > ImagePtr
csDATA_VOXEL
the data voxel space (dv)
void spaceAddedOrRemoved()
csREF
the data reference space (r)
Class that listens to changes in a coordinate system, and emits a signal if that system changes...
virtual CoordinateSystem getD(DataPtr data)
datas coordinate system static CoordinateSystem getPr(); ///<patient references coordinate system ...
virtual Transform3D get_rMpr()
COORDINATE_SYSTEM mId
the type of coordinate system
csPATIENTREF
the patient/tool reference space (pr)
boost::shared_ptr< class Data > DataPtr
virtual CoordinateSystem getPr()
virtual Transform3D getActiveToolTipTransform(CoordinateSystem to, bool useOffset=false)
Get toMt, where t is active tool.
void reportWarning(QString msg)
boost::shared_ptr< class PatientModelService > PatientModelServicePtr
virtual std::map< QString, QString > getDisplayNamesForCoordRefObjects()
Transform3D createTransformTranslate(const Vector3D &translation)
Identification of a Coordinate system.
csTOOL_OFFSET
the tool space t with a virtual offset added along the z axis. (to)
QString mRefObject
for tool, sensor and data we need a object uid to define the coordinate system
Eigen::Vector3d Vector3D
Vector3D is a representation of a point or vector in 3D.
virtual std::vector< CoordinateSystem > getSpacesToPresentInGUI()
virtual CoordinateSystem getR()
data references coordinate system
boost::shared_ptr< class SpaceListener > SpaceListenerPtr
cxLogicManager_EXPORT TrackingServicePtr trackingService()
virtual SpaceListenerPtr createListener()
SpaceProviderImpl(TrackingServicePtr trackingService, PatientModelServicePtr dataManager)
virtual Vector3D getActiveToolTipPoint(CoordinateSystem to, bool useOffset=false)
P_to, active tools current point in coord.
boost::shared_ptr< class Tool > ToolPtr