27 #ifndef vtkAbstractTransform_h
28 #define vtkAbstractTransform_h
30 #include "vtkCommonTransformsModule.h"
34 VTK_ABI_NAMESPACE_BEGIN
52 this->InternalTransformPoint(in, out);
62 this->InternalTransformPoint(in, out);
71 return this->TransformDoublePoint(x, y, z);
85 this->InternalFloatPoint[0] = x;
86 this->InternalFloatPoint[1] = y;
87 this->InternalFloatPoint[2] = z;
88 this->TransformPoint(this->InternalFloatPoint, this->InternalFloatPoint);
89 return this->InternalFloatPoint;
104 this->InternalDoublePoint[0] = x;
105 this->InternalDoublePoint[1] = y;
106 this->InternalDoublePoint[2] = z;
107 this->TransformPoint(this->InternalDoublePoint, this->InternalDoublePoint);
108 return this->InternalDoublePoint;
122 void TransformNormalAtPoint(
const float point[3],
const float in[3],
float out[3]);
123 void TransformNormalAtPoint(
const double point[3],
const double in[3],
double out[3]);
128 this->TransformNormalAtPoint(
point, normal, this->InternalDoublePoint);
129 return this->InternalDoublePoint;
141 this->TransformNormalAtPoint(
point, normal, this->InternalDoublePoint);
142 return this->InternalDoublePoint;
154 this->TransformNormalAtPoint(
point, normal, this->InternalFloatPoint);
155 return this->InternalFloatPoint;
165 void TransformVectorAtPoint(
const float point[3],
const float in[3],
float out[3]);
166 void TransformVectorAtPoint(
const double point[3],
const double in[3],
double out[3]);
171 this->TransformVectorAtPoint(
point,
vector, this->InternalDoublePoint);
172 return this->InternalDoublePoint;
184 this->TransformVectorAtPoint(
point,
vector, this->InternalDoublePoint);
185 return this->InternalDoublePoint;
197 this->TransformVectorAtPoint(
point,
vector, this->InternalFloatPoint);
198 return this->InternalFloatPoint;
214 int nOptionalVectors = 0,
vtkDataArray** inVrsArr =
nullptr,
259 virtual
void Inverse() = 0;
279 virtual
void InternalTransformPoint(const
float in[3],
float out[3]) = 0;
280 virtual
void InternalTransformPoint(const
double in[3],
double out[3]) = 0;
290 virtual
void InternalTransformDerivative(
291 const
float in[3],
float out[3],
float derivative[3][3]) = 0;
292 virtual
void InternalTransformDerivative(
293 const
double in[3],
double out[3],
double derivative[3][3]) = 0;
309 virtual
int CircuitCheck(vtkAbstractTransform* transform);
319 void Modified() override;
328 vtkAbstractTransform();
329 ~vtkAbstractTransform() override;
334 virtual
void InternalUpdate() {}
341 float InternalFloatPoint[3];
342 double InternalDoublePoint[3];
347 vtkInternals* Internals;
369 this->InverseTransform = tmp;
391 void Concatenate(
const double elements[16]);
405 void Translate(
double x,
double y,
double z);
406 void Rotate(
double angle,
double x,
double y,
double z);
407 void Scale(
double x,
double y,
double z);
455 void PrintSelf(ostream& os,
vtkIndent indent);
516 VTK_ABI_NAMESPACE_END
abstract base class for most VTK objects
represent and manipulate 4x4 transformation matrices
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkTypeUInt32 vtkMTimeType
a simple class to control print indentation
abstract superclass for arrays of numeric data
abstract base class for most VTK objects
#define VTK_SIZEHINT(...)
#define VTK_MARSHALEXCLUDE(reason)
represent and manipulate 3D points
#define VTK_MARSHAL_EXCLUDE_REASON_IS_INTERNAL