All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Classes | Namespaces | Typedefs | Enumerations
RotationMatrix.h File Reference

Implementation of a 3x3 rotation matrix. More...

#include <algorithm>
#include <cmath>
#include <ostream>
#include <limits>
#include <blaze/math/Accuracy.h>
#include <blaze/math/DenseMatrix.h>
#include <blaze/math/shims/Equal.h>
#include <blaze/math/shims/IsDefault.h>
#include <blaze/math/shims/IsNaN.h>
#include <blaze/math/StaticMatrix.h>
#include <blaze/math/StaticVector.h>
#include <blaze/math/traits/MathTrait.h>
#include <blaze/math/traits/MultTrait.h>
#include <blaze/math/Types.h>
#include <blaze/system/Precision.h>
#include <blaze/util/Assert.h>
#include <blaze/util/constraints/Const.h>
#include <blaze/util/constraints/FloatingPoint.h>
#include <blaze/util/constraints/Volatile.h>
#include <blaze/util/Types.h>

Go to the source code of this file.

Classes

class  blaze::RotationMatrix< Type >
 Efficient, generic implementation of a 3x3 rotation matrix.The RotationMatrix class is the representation of a 3x3 rotation matrix with a total of 9 statically allocated elements of arbitrary type. The naming convention of the elements is as following: More...
 

Namespaces

namespace  blaze
 Namespace of the Blaze C++ math library.
 

Typedefs

typedef RotationMatrix< real > blaze::Rot3
 Rotation matrix of real type.
 

Enumerations

enum  blaze::EulerRotation {
  blaze::XYZs = 0, blaze::ZYXr = 1, blaze::XYXs = 2, blaze::XYXr = 3,
  blaze::XZYs = 4, blaze::YZXr = 5, blaze::XZXs = 6, blaze::XZXr = 7,
  blaze::YZXs = 8, blaze::XZYr = 9, blaze::YZYs = 10, blaze::YZYr = 11,
  blaze::YXZs = 12, blaze::ZXYr = 13, blaze::YXYs = 14, blaze::YXYr = 15,
  blaze::ZXYs = 16, blaze::YXZr = 17, blaze::ZXZs = 18, blaze::ZXZr = 19,
  blaze::ZYXs = 20, blaze::XYZr = 21, blaze::ZYZs = 22, blaze::ZYZr = 23
}
 Order of the Euler rotationThis codes are needed for the EulerAngles function in order to calculate the Euler angles for a specific combination of rotations. More...
 

Functions

RotationMatrix operators
template<typename T1 , typename T2 >
bool blaze::operator== (const RotationMatrix< T1 > &lhs, const RotationMatrix< T2 > &rhs)
 Equality operator for the comparison of two rotation matrices.
 
template<typename T1 , typename T2 >
bool blaze::operator!= (const RotationMatrix< T1 > &lhs, const RotationMatrix< T2 > &rhs)
 Inequality operator for the comparison of two rotation matrices.
 
template<typename Type >
std::ostream & blaze::operator<< (std::ostream &os, const RotationMatrix< Type > &m)
 Global output operator for 3x3 rotation matrices.
 
template<typename Type >
bool blaze::isnan (const RotationMatrix< Type > &m)
 Checks the given rotation matrix for not-a-number elements.
 
template<typename Type >
const StaticMatrix< Type, 3UL, 3UL, false > blaze::abs (const RotationMatrix< Type > &m)
 Returns a matrix containing the absolute values of each single element of m.
 
template<typename Type >
const StaticMatrix< Type, 3UL, 3UL, false > blaze::fabs (const RotationMatrix< Type > &m)
 Returns a matrix containing the absolute values of each single element of m.
 
template<typename Type >
void blaze::reset (RotationMatrix< Type > &m)
 Resetting the given rotation matrix.
 
template<typename Type >
void blaze::clear (RotationMatrix< Type > &m)
 Clearing the given rotation matrix.
 
template<typename Type >
bool blaze::isDefault (const RotationMatrix< Type > &m)
 Returns whether the given rotation matrix is in default state.
 
template<typename Type >
const RotationMatrix< Type > blaze::trans (const RotationMatrix< Type > &m)
 Calculation of the transpose of the rotation matrix.
 
template<typename Type >
const RotationMatrix< Type > blaze::inv (const RotationMatrix< Type > &m)
 Inverting the given rotation matrix.
 
template<typename Type >
const RotationMatrix< Type > blaze::sq (const RotationMatrix< Type > &m)
 Squaring the given rotation matrix.
 
template<typename Type >
void blaze::swap (RotationMatrix< Type > &a, RotationMatrix< Type > &b)
 Swapping the contents of two rotation matrices.
 
RotationMatrix arithmetic operators
template<typename T1 , typename T2 >
const StaticVector< typename
MultTrait< T1, T2 >::Type, 3UL, false > 
blaze::operator* (const RotationMatrix< T1 > &lhs, const StaticVector< T2, 3UL, false > &rhs)
 Multiplication operator for the multiplication of a rotation matrix and a vector ( $ \vec{a}=B*\vec{c} $).
 
template<typename T1 , typename T2 >
const StaticVector< typename
MultTrait< T1, T2 >::Type, 3UL, true > 
blaze::operator* (const StaticVector< T1, 3UL, true > &lhs, const RotationMatrix< T2 > &rhs)
 Multiplication operator for the multiplication of a vector and a rotation matrix ( $ \vec{a}=\vec{b}^T*B $).
 
template<typename T1 , typename T2 >
const StaticMatrix< typename
MultTrait< T1, T2 >::Type, 3UL, 3UL, false > 
blaze::operator* (const RotationMatrix< T1 > &lhs, const StaticMatrix< T2, 3UL, 3UL, false > &rhs)
 Multiplication operator for the multiplication of a rotation matrix and a standard matrix ( $ A=R*B $).
 
template<typename T1 , typename T2 >
const StaticMatrix< typename
MultTrait< T1, T2 >::Type, 3UL, 3UL, false > 
blaze::operator* (const StaticMatrix< T1, 3UL, 3UL, false > &lhs, const RotationMatrix< T2 > &rhs)
 Multiplication operator for the multiplication of a standard matrix and a rotation matrix ( $ A=B*R $).
 
template<typename T1 , typename T2 >
const RotationMatrix< typename
MultTrait< T1, T2 >::Type > 
blaze::operator* (const RotationMatrix< T1 > &lhs, const RotationMatrix< T2 > &rhs)
 Multiplication operator for the multiplication of two rotation matrices ( $ A=B*C $).
 

Detailed Description

Implementation of a 3x3 rotation matrix.

Copyright (C) 2011 Klaus Iglberger - All Rights Reserved

This file is part of the Blaze library. This library is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with a special exception for linking and compiling against the Blaze library, the so-called "runtime exception"; see the file COPYING. If not, see http://www.gnu.org/licenses/.