X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fyoink;a=blobdiff_plain;f=src%2Fcml%2Fquaternion.h;fp=src%2Fcml%2Fquaternion.h;h=595fe039b191afa7148e7d9782e57e7f9a719ad9;hp=0000000000000000000000000000000000000000;hb=0fffd0097d7b496454413e57b398c903ecc252e4;hpb=79becf045222f385da5a1b9eb79081f6f5266c86 diff --git a/src/cml/quaternion.h b/src/cml/quaternion.h new file mode 100644 index 0000000..595fe03 --- /dev/null +++ b/src/cml/quaternion.h @@ -0,0 +1,69 @@ +/* -*- 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