36 #include "vtkImageData.h"
37 #include <vtkPointData.h>
38 #include <vtkUnsignedCharArray.h>
39 #include <vtkPolyData.h>
40 #include <vtkPolyDataMapper.h>
42 #include <vtkCellArray.h>
43 #include <vtkFloatArray.h>
44 #include <vtkProperty.h>
46 #include <vtkMatrix4x4.h>
63 ToolTracer::ToolTracer()
66 mPolyData = vtkPolyDataPtr::New();
67 mActor = vtkActorPtr::New();
68 mPolyDataMapper = vtkPolyDataMapperPtr::New();
70 mPolyDataMapper->SetInputData(mPolyData);
71 mActor->SetMapper(mPolyDataMapper);
73 mProperty = vtkPropertyPtr::New();
74 mActor->SetProperty( mProperty );
75 mProperty->SetPointSize(4);
79 mPoints = vtkPointsPtr::New();
80 mLines = vtkCellArrayPtr::New();
82 mPolyData->SetPoints(mPoints);
83 mPolyData->SetLines(mLines);
84 mPolyData->SetVerts(mLines);
104 this->disconnectTool();
112 mPolyData->Modified();
115 void ToolTracer::connectTool()
117 if (mTool && mRunning)
119 connect(mTool.get(), SIGNAL(toolTransformAndTimestamp(
Transform3D,
double)),
this, SLOT(receiveTransforms(
Transform3D,
double)));
124 void ToolTracer::disconnectTool()
126 if (mTool && mRunning)
128 disconnect(mTool.get(), SIGNAL(toolTransformAndTimestamp(
Transform3D,
double)),
this, SLOT(receiveTransforms(
Transform3D,
double)));
135 mActor->GetProperty()->SetColor(color.redF(), color.greenF(), color.blueF());
140 this->disconnectTool();
160 void ToolTracer::receiveTransforms(
Transform3D prMt,
double timestamp)
167 if (mMinDistance > 0.0)
169 if (!mFirstPoint && (mPreviousPoint - p).
length() < mMinDistance)
177 mPoints->InsertNextPoint(p.begin());
179 if (mPoints->GetNumberOfPoints() > 1)
183 mLines->Initialize();
184 std::vector<vtkIdType> ids(mPoints->GetNumberOfPoints());
185 for (
unsigned i=0; i<ids.size(); ++i)
187 mLines->InsertNextCell(ids.size(), &(*ids.begin()));
189 mPolyData->Modified();
195 for(TimedTransformMap::iterator iter=trackerRecordedData_prMt.begin(); iter!=trackerRecordedData_prMt.end(); ++iter)
197 double timestamp = iter->first;
199 this->receiveTransforms(prMt, timestamp);
boost::shared_ptr< class SpaceProvider > SpaceProviderPtr
vtkSmartPointer< class vtkActor > vtkActorPtr
Transform3D Transform3D
Transform3D is a representation of an affine 3D transform.
boost::shared_ptr< class ToolTracer > ToolTracerPtr
vtkSmartPointer< class vtkPolyData > vtkPolyDataPtr
cxLogicManager_EXPORT SpaceProviderPtr spaceProvider()
Eigen::Vector3d Vector3D
Vector3D is a representation of a point or vector in 3D.
RealScalar length() const
std::map< double, Transform3D > TimedTransformMap
boost::shared_ptr< class Tool > ToolPtr