32 #ifndef __vtkQuaternion_h
33 #define __vtkQuaternion_h
53 vtkQuaternion(
const T& w,
const T& x,
const T& y,
const T& z);
115 void Set(
const T& w,
const T& x,
const T& y,
const T& z);
117 void Get(T quat[4])
const;
122 void SetW(
const T& w);
123 const T&
GetW()
const;
128 void SetX(
const T& x);
129 const T&
GetX()
const;
134 void SetY(
const T& y);
135 const T&
GetY()
const;
140 void SetZ(
const T& z);
141 const T&
GetZ()
const;
150 const T& angle,
const T& x,
const T& y,
const T& z);
213 #define vtkQuaternionIdentity(quaternionType, type) \
214 quaternionType Identity() const \
216 return quaternionType(vtkQuaternion<type>::Identity().GetData()); \
218 #define vtkQuaternionNormalized(quaternionType, type) \
219 quaternionType Normalized() const \
221 return quaternionType(vtkQuaternion<type>::Normalized().GetData()); \
223 #define vtkQuaternionConjugated(quaternionType, type) \
224 quaternionType Conjugated() const \
226 return quaternionType(vtkQuaternion<type>::Conjugated().GetData()); \
228 #define vtkQuaternionInverse(quaternionType, type) \
229 quaternionType Inverse() const \
231 return quaternionType(vtkQuaternion<type>::Inverse().GetData()); \
233 #define vtkQuaternionUnitLog(quaternionType, type) \
234 quaternionType UnitLog() const \
236 return quaternionType( \
237 vtkQuaternion<type>::UnitLog().GetData()); \
239 #define vtkQuaternionUnitExp(quaternionType, type) \
240 quaternionType UnitExp() const \
242 return quaternionType( \
243 vtkQuaternion<type>::UnitExp().GetData()); \
245 #define vtkQuaternionNormalizedWithAngleInDegrees(quaternionType, type) \
246 quaternionType NormalizedWithAngleInDegrees() const \
248 return quaternionType( \
249 vtkQuaternion<type>::NormalizedWithAngleInDegrees().GetData()); \
251 #define vtkQuaternionSlerp(quaternionType, type) \
252 quaternionType Slerp(type t, const quaternionType& q) const \
254 return quaternionType( \
255 vtkQuaternion<type>::Slerp(t, q).GetData()); \
257 #define vtkQuaternionInnerPoint(quaternionType, type) \
258 quaternionType InnerPoint(const quaternionType& q1, \
259 const quaternionType& q2) const \
261 return quaternionType( \
262 vtkQuaternion<type>::InnerPoint(q1, q2).GetData()); \
264 #define vtkQuaternionOperatorPlus(quaternionType, type) \
265 inline quaternionType operator+(const quaternionType& q) const \
267 return quaternionType( ( \
268 static_cast< vtkQuaternion<type> > (*this) + \
269 static_cast< vtkQuaternion<type> > (q)).GetData()); \
271 #define vtkQuaternionOperatorMinus(quaternionType, type) \
272 inline quaternionType operator-(const quaternionType& q) const \
274 return quaternionType( ( \
275 static_cast< vtkQuaternion<type> > (*this) - \
276 static_cast< vtkQuaternion<type> > (q)).GetData()); \
278 #define vtkQuaternionOperatorMultiply(quaternionType, type) \
279 inline quaternionType operator*(const quaternionType& q) const \
281 return quaternionType( ( \
282 static_cast< vtkQuaternion<type> > (*this) * \
283 static_cast< vtkQuaternion<type> > (q)).GetData()); \
285 #define vtkQuaternionOperatorMultiplyScalar(quaternionType, type) \
286 inline quaternionType operator*(const type& scalar) const \
288 return quaternionType( ( \
289 static_cast< vtkQuaternion<type> > (*this) * \
290 scalar).GetData()); \
292 #define vtkQuaternionOperatorDivide(quaternionType, type) \
293 inline quaternionType operator/(const quaternionType& q) const \
295 return quaternionType( ( \
296 static_cast< vtkQuaternion<type> > (*this) / \
297 static_cast< vtkQuaternion<type> > (q)).GetData()); \
299 #define vtkQuaternionOperatorDivideScalar(quaternionType, type) \
300 inline quaternionType operator/(const type& scalar) const \
302 return quaternionType( ( \
303 static_cast< vtkQuaternion<type> > (*this) / \
304 scalar).GetData()); \
308 #define vtkQuaternionOperatorMacro(quaternionType, type) \
309 vtkQuaternionIdentity(quaternionType, type) \
310 vtkQuaternionNormalized(quaternionType, type) \
311 vtkQuaternionConjugated(quaternionType, type) \
312 vtkQuaternionInverse(quaternionType, type) \
313 vtkQuaternionUnitLog(quaternionType, type) \
314 vtkQuaternionUnitExp(quaternionType, type) \
315 vtkQuaternionNormalizedWithAngleInDegrees(quaternionType, type) \
316 vtkQuaternionSlerp(quaternionType, type) \
317 vtkQuaternionInnerPoint(quaternionType, type) \
318 vtkQuaternionOperatorPlus(quaternionType, type) \
319 vtkQuaternionOperatorMinus(quaternionType, type) \
320 vtkQuaternionOperatorMultiply(quaternionType, type) \
321 vtkQuaternionOperatorMultiplyScalar(quaternionType, type) \
322 vtkQuaternionOperatorDivide(quaternionType, type) \
323 vtkQuaternionOperatorDivideScalar(quaternionType, type)
359 #include "vtkQuaternion.txx"
361 #endif // __vtkQuaternion_h
vtkQuaternion< T > UnitLog() const
vtkQuaternionf(float scalar)
void ToMatrix3x3(T A[3][3]) const
vtkQuaternion< T > operator/(const vtkQuaternion< T > &q) const
vtkQuaterniond(double w, double x, double y, double z)
void NormalizeWithAngleInDegrees()
void operator/=(const T &scalar)
vtkQuaternion< T > operator-(const vtkQuaternion< T > &q) const
vtkQuaternion< T > Normalized() const
vtkQuaternion< T > NormalizedWithAngleInDegrees() const
templated base type for storage of quaternions.
vtkQuaternion< T > UnitExp() const
void SetRotationAngleAndAxis(T angle, T axis[3])
T GetRotationAngleAndAxis(T axis[3]) const
vtkQuaterniond(double scalar)
void Get(T quat[4]) const
vtkQuaternionOperatorMacro(vtkQuaterniond, double)
vtkQuaternion< T > Slerp(T t, const vtkQuaternion< T > &q) const
vtkQuaternion(const T *init)
vtkQuaternionf(const float *init)
templated base type for containers of constant size.
void FromMatrix3x3(const T A[3][3])
vtkQuaternion< CastTo > Cast() const
vtkQuaternion< T > InnerPoint(const vtkQuaternion< T > &q1, const vtkQuaternion< T > &q2) const
vtkQuaternionf(float w, float x, float y, float z)
vtkQuaternion< T > operator+(const vtkQuaternion< T > &q) const
vtkQuaternion< T > Inverse() const
void operator=(const vtkQuaternion< T > &q)
#define vtkQuaternionOperatorMacro(quaternionType, type)
vtkQuaterniond(const double *init)
vtkQuaternion(const T &scalar)
void Set(const T &w, const T &x, const T &y, const T &z)
VTKWRAPPINGJAVA_EXPORT jlong q(JNIEnv *env, jobject obj)
void operator*=(const T &scalar) const
vtkQuaternion< T > operator*(const vtkQuaternion< T > &q) const
static vtkQuaternion< T > Identity()
vtkQuaternion< T > Conjugated() const