33 #include <boost/cstdint.hpp>
36 #include <vtkPolyData.h>
37 #include <vtkAppendPolyData.h>
38 #include <vtkConeSource.h>
39 #include <vtkCylinderSource.h>
43 #include <vtkClipPolyData.h>
54 Eigen::Array2i extent = frameSize - 1;
57 Vector3D imageSpacing(width/extent[0], depth/extent[1], 1.0);
61 retval.
setSize(QSize(frameSize[0], frameSize[1]));
74 retval->setProbeSector(probeData);
75 retval->setVisible(
true);
76 retval->startTracking(30);
84 int DummyTool::mTransformCount = 0;
92 mTransformSaveFileName(
"DummyToolsAreToDumbToSaveThemselves"),
96 qRegisterMetaType<Transform3D>(
"Transform3D");
104 connect(mTimer.get(), SIGNAL(timeout()),
this, SLOT(sendTransform()));
133 mTransforms = positions;
148 mTransformSaveFileName = filename;
166 connect(mThread, SIGNAL(ping()),
this, SLOT(sendTransform()));
181 void DummyTool::stopThread()
187 disconnect(mThread, SIGNAL(ping()),
this, SLOT(sendTransform()));
192 if (mThread->isRunning())
194 mThread->terminate();
215 void DummyTool::sendTransform()
226 vtkPolyDataPtr DummyTool::createPolyData(
double h1,
double h2,
double r1,
double r2)
237 plane->SetNormal(0,0,-1);
238 plane->SetOrigin(0,0,-h2);
241 double h1_extension = h1*r2 / (r1-r2);
242 double h1_mod = h1+h1_extension;
243 cone1->SetResolution(50);
244 cone1->SetRadius(r1);
245 cone1->SetHeight(h1_mod);
246 cone1->SetDirection(0,0,1);
247 double center1 = -h1/2-h2+h1_extension/2;
251 clipper1->SetInputConnection(cone1->GetOutputPort());
252 clipper1->SetClipFunction(plane);
255 cone2->SetResolution(25);
256 cone2->SetRadius(r2);
257 cone2->SetHeight(h2);
258 cone2->SetDirection(0,0,1);
259 double center2 = -h2/2;
262 assembly->AddInputConnection(clipper1->GetOutputPort());
263 assembly->AddInputConnection(cone2->GetOutputPort());
266 return assembly->GetOutput();
274 unsigned N = (unsigned)floor((b-a).length()/step + 0.5);
277 for (
unsigned i=0; i<N; ++i)
281 retval->push_back(T * R);
287 std::vector<Transform3D> DummyTool::createToolPositionMovement(
const DoubleBoundingBox3D& bb)
const
290 std::vector<Transform3D> retval;
310 double step = *std::max_element(range.begin(), range.end()) / steps;
316 createLinearMovement(&retval, &T, R, a, b, step);
318 for (
unsigned i=0; i<50; ++i)
322 retval.push_back(T * R);
325 createLinearMovement(&retval, &T, R, b, c, step);
327 for (
unsigned i=0; i<50; ++i)
331 retval.push_back(T * R);
334 createLinearMovement(&retval, &T, R, c, d, step);
335 createLinearMovement(&retval, &T, R, d, a, step);
337 for (
unsigned i=0; i<20; ++i)
341 retval.push_back(T * R);
351 std::vector<Transform3D> retval;
365 double step = *std::max_element(range.begin(), range.end()) / steps;
371 createLinearMovement(&retval, &T, R, a, b, step);
372 createLinearMovement(&retval, &T, R, b, c, step);
373 createLinearMovement(&retval, &T, R, c, d, step);
374 createLinearMovement(&retval, &T, R, d, a, step);
382 if(mTransformCount >=
int(mTransforms.size()))
385 return &mTransforms.at(mTransformCount++);
PlainObject normal() const
void setSpacing(Vector3D spacing)
Transform3D Transform3D
Transform3D is a representation of an affine 3D transform.
US beam is emitted straight forward.
vtkSmartPointer< class vtkAppendPolyData > vtkAppendPolyDataPtr
void setSector(double depthStart, double depthEnd, double width, double centerOffset=0)
vtkSmartPointer< class vtkClipPolyData > vtkClipPolyDataPtr
vtkSmartPointer< class vtkPolyData > vtkPolyDataPtr
boost::shared_ptr< class DummyTool > DummyToolPtr
void setOrigin_p(Vector3D origin_p)
void setClipRect_p(DoubleBoundingBox3D clipRect_p)
Transform3D createTransformTranslate(const Vector3D &translation)
Representation of a floating-point bounding box in 3D. The data are stored as {xmin,xmax,ymin,ymax,zmin,zmax}, in order to simplify communication with vtk.
vtkSmartPointer< class vtkConeSource > vtkConeSourcePtr
Eigen::Vector3d Vector3D
Vector3D is a representation of a point or vector in 3D.
Definition of characteristics for an Ultrasound Probe Sector.
Transform3D createTransformRotateZ(const double angle)
Transform3D createTransformRotateX(const double angle)
vtkSmartPointer< class vtkPlane > vtkPlanePtr