20 #ifndef MIRTK_LinearFreeFormTransformationTD_H 21 #define MIRTK_LinearFreeFormTransformationTD_H 23 #include "mirtk/LinearFreeFormTransformation4D.h" 32 class BSplineFreeFormTransformationTD;
57 mirtkPublicAttributeMacro(
double, MinTimeStep);
60 mirtkPublicAttributeMacro(
double, MaxTimeStep);
72 double,
double,
double,
double);
76 double,
double,
double,
double);
96 const double *,
const double *,
int,
97 bool =
false,
int = 3,
int = 8);
102 virtual void ApproximateDOFs(
const double *,
const double *,
const double *,
const double *,
103 const double *,
const double *,
const double *,
int);
110 const double *,
const double *,
const double *,
int,
111 double *,
double = 1.0)
const;
119 const double *,
const double *,
int,
120 bool =
false,
int = 3,
int = 8);
125 virtual void Interpolate(
const double *,
const double *,
const double *);
131 virtual void LocalTransform(
double &,
double &,
double &,
double,
double)
const;
134 virtual bool LocalInverse(
double &,
double &,
double &,
double,
double)
const;
173 int minsteps = abs(
iround((t2 - t1) / _MaxTimeStep));
174 int maxsteps = abs(
iround((t2 - t1) / _MinTimeStep));
175 if (minsteps < 2) minsteps = 2;
176 if (maxsteps < 2) maxsteps = 2;
180 double dt = (t2 - t1) / N;
183 for (
int n = 0; n < N; n++) {
190 if (-2 <= u && u <=
_x + 1 &&
191 -2 <= v && v <=
_y + 1 &&
192 -2 <= w && w <=
_z + 1 &&
193 -2 <= s && s <=
_t + 1) {
195 while (N < maxsteps) {
203 sjac = sjac *
_matW2L(0, 0, 3, 3) * dt;
243 #endif // MIRTK_LinearFreeFormTransformationTD_H
double Det3x3() const
Calculate determinant of a 3x3 matrix.
MIRTKCU_API int iround(T x)
Round floating-point value and cast to int.