X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2Fmoof%2Fcml%2Fquaternion.h;fp=src%2Fmoof%2Fcml%2Fquaternion.h;h=eee3da8a388bda4b2821927f048f405993e6659b;hb=831f04d4bc19a390415ac0bbac4331c7a65509bc;hp=0000000000000000000000000000000000000000;hpb=299af4f2047e767e5d79501c26444473bda64c64;p=chaz%2Fyoink diff --git a/src/moof/cml/quaternion.h b/src/moof/cml/quaternion.h new file mode 100644 index 0000000..eee3da8 --- /dev/null +++ b/src/moof/cml/quaternion.h @@ -0,0 +1,67 @@ +/* -*- C++ -*- ------------------------------------------------------------ + +Copyright (c) 2007 Jesse Anders and Demian Nave http://cmldev.net/ + +The Configurable Math Library (CML) is distributed under the terms of the +Boost Software License, v1.0 (see cml/LICENSE for details). + + *-----------------------------------------------------------------------*/ +/** @file + * @brief + */ + +#ifndef cml_quaternion_h +#define cml_quaternion_h + +#include + +namespace cml { + +// NOTE: 'scale' constant no longer used. + +/** Helper to specify v1^v2 multiplication order. */ +struct positive_cross { + /*enum { scale = 1 };*/ +}; + +/** Helper to specify v2^v1 multiplication order. */ +struct negative_cross { + /*enum { scale = -1 };*/ +}; + +/** Helper to specify scalar-first quaternion ordering. */ +struct scalar_first { + enum { W, X, Y, Z }; +}; + +/** Helper to specify vector-first quaternion ordering. */ +struct vector_first { + enum { X, Y, Z, W }; +}; + +/** A configurable quaternion. + * + * This class encapsulates the notion of a quaternion. The ArrayType + * template argument can be used to select the type of array to be used as + * internal storage for the quaternion's coefficients. + * + * @note Quaternions with two different orders cannot be used in the same + * expression. + */ +template, + class Order = scalar_first, class Cross = positive_cross> class quaternion; + +} // namespace cml + +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +// ------------------------------------------------------------------------- +// vim:ft=cpp