32 template <
typename Real>
105 template <
typename Real>
template <
int N>
inline 109 static_assert(1 <= N && N <= 16,
"Invalid degree.");
111 Real cs =
Dot(q0, q1);
125 GetEstimate<N>(
t, (Real)1 - cs, f0, f1);
126 return q0 * f0 + q1 * (sign * f1);
129 template <
typename Real>
template <
int N>
inline 133 static_assert(1 <= N && N <= 16,
"Invalid degree.");
137 GetEstimate<N>(
t, (Real)1 -
Dot(q0, q1), f0, f1);
138 return q0 * f0 + q1 * f1;
141 template <
typename Real>
template <
int N>
inline 145 static_assert(1 <= N && N <= 16,
"Invalid degree.");
149 GetEstimate<N>(
t, omcosA, f0, f1);
150 return q0 * f0 + q1 * f1;
153 template <
typename Real>
template <
int N>
inline 158 static_assert(1 <= N && N <= 16,
"Invalid degree.");
161 Real twoT = t * (Real)2;
165 GetEstimate<N>(twoT, omcosAH, f0, f1);
166 return q0 * f0 + qh * f1;
171 GetEstimate<N>(twoT - (Real)1, omcosAH, f0, f1);
172 return qh * f0 + q1 * f1;
static Quaternion< Real > EstimateRPH(Real t, Quaternion< Real > const &q0, Quaternion< Real > const &q1, Quaternion< Real > const &qh, Real omcosAH)
DualQuaternion< Real > Dot(DualQuaternion< Real > const &d0, DualQuaternion< Real > const &d1)
static Quaternion< Real > EstimateR(Real t, Quaternion< Real > const &q0, Quaternion< Real > const &q1)
static Quaternion< Real > EstimateRP(Real t, Quaternion< Real > const &q0, Quaternion< Real > const &q1, Real omcosA)
static Quaternion< Real > Estimate(Real t, Quaternion< Real > const &q0, Quaternion< Real > const &q1)