26 #ifndef ARBITRARYSINGLEIMAGEVOLUMECOMPONENT_H
27 #define ARBITRARYSINGLEIMAGEVOLUMECOMPONENT_H
70 ArbitrarySingleImageComponent(
Component* parentComponent,
const QString& name, vtkSmartPointer<vtkWindowLevelLookupTable> lut);
73 ~ArbitrarySingleImageComponent()
override =
default;
79 virtual void setTransform(vtkSmartPointer<vtkTransform>)
override;
83 virtual void resetTransform() override final;
86 virtual
void setTransformTranslation(
double,
double,
double) override final;
89 virtual
void setTransformRotation(
double,
double,
double) override final;
92 CAMITK_API_UNIMPLEMENTED virtual
void translate(
double,
double,
double) override;
95 CAMITK_API_UNIMPLEMENTED virtual
void rotate(
double,
double,
double) override;
98 CAMITK_API_UNIMPLEMENTED virtual
void rotateVTK(
double,
double,
double) override;
101 CAMITK_API_UNIMPLEMENTED virtual
void setTransformTranslationVTK(
double,
double,
double) override;
104 CAMITK_API_UNIMPLEMENTED virtual
void setTransformRotationVTK(
double,
double,
double) override;
108 virtual
void setSlice(
int) override;
111 virtual
void setSlice(
double,
double,
double) override;
115 virtual
int getSlice() const override;
119 virtual
int getNumberOfSlices() const override;
125 virtual
void pixelPicked(
double,
double,
double) override;
139 virtual
double getTranslationInVolume();
143 void getImageCenterAndTranslationVectorInParent(
double C_P[4],
double Z_P[4]);
147 void getImageCenterInParent(
double[4]);
152 bool checkCenter(vtkSmartPointer<vtkMatrix4x4>);
155 bool pointInsideVolume(QVector3D);
158 void updateTranslationExtremity();
201 template<typename T> static vtkSmartPointer<vtkMatrix4x4> Multiply4x4(T, T);
202 template<typename T, typename... Args> static vtkSmartPointer<vtkMatrix4x4> Multiply4x4(T
a, T b, Args... args);
212 static
bool linePlaneIntersectionPoint(QVector3D, QVector3D, QVector3D, QVector3D, QVector3D&);
216 static
float roundTo4Decimals(
float);
219 static QVector3D roundTo4Decimals(QVector3D);
225 #endif // ARBITRARYSINGLEIMAGEVOLUMECOMPONENT_H