/usr/include/visp/vpRotationMatrix.h is in libvisp-dev 2.9.0-3+b2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 | /****************************************************************************
*
* $Id: vpRotationMatrix.h 4574 2014-01-09 08:48:51Z fspindle $
*
* This file is part of the ViSP software.
* Copyright (C) 2005 - 2014 by INRIA. All rights reserved.
*
* This software is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* ("GPL") version 2 as published by the Free Software Foundation.
* See the file LICENSE.txt at the root directory of this source
* distribution for additional information about the GNU GPL.
*
* For using ViSP with software that can not be combined with the GNU
* GPL, please contact INRIA about acquiring a ViSP Professional
* Edition License.
*
* See http://www.irisa.fr/lagadic/visp/visp.html for more information.
*
* This software was developed at:
* INRIA Rennes - Bretagne Atlantique
* Campus Universitaire de Beaulieu
* 35042 Rennes Cedex
* France
* http://www.irisa.fr/lagadic
*
* If you have questions regarding the use of this file, please contact
* INRIA at visp@inria.fr
*
* This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
* WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
*
* Description:
* Rotation matrix.
*
* Authors:
* Eric Marchand
*
*****************************************************************************/
#ifndef vpROTATIONMATRIX_H
#define vpROTATIONMATRIX_H
/*!
\file vpRotationMatrix.h
\brief Class that consider the particular case of rotation matrix
*/
#include <visp/vpMatrix.h>
#include <visp/vpRxyzVector.h>
#include <visp/vpRzyxVector.h>
#include <visp/vpRzyzVector.h>
#include <visp/vpThetaUVector.h>
#include <visp/vpTranslationVector.h>
#include <visp/vpQuaternionVector.h>
/*!
\class vpRotationMatrix
\ingroup RotTransformation
\brief The vpRotationMatrix considers the particular case of
a rotation matrix.
It is derived from vpMatrix.
\author Eric Marchand (Eric.Marchand@irisa.fr) Irisa / Inria Rennes
*/
class VISP_EXPORT vpRotationMatrix : public vpMatrix
{
friend class vpMatrix;
friend class vpRxyzVector;
friend class vpRzyzVector;
friend class vpRzyxVector;
friend class vpThetaUVector;
friend class vpTranslationVector;
public:
//! Basic initialisation (identity)
void init() ;
//! Basic initialisation (identity)
void setIdentity() ;
void eye();
//! basic constructor
vpRotationMatrix() ;
//! copy constructor
vpRotationMatrix(const vpRotationMatrix &R) ;
//! Construction from rotation (theta U parameterization)
vpRotationMatrix(const vpThetaUVector &r) ;
//! Construction from rotation (Euler parameterization)
vpRotationMatrix(const vpRzyzVector &r) ;
//! Construction from rotation Rxyz
vpRotationMatrix(const vpRxyzVector &r) ;
//! Construction from rotation Rzyx
vpRotationMatrix(const vpRzyxVector &r) ;
//! Construction from rotation (theta U parameterization)
vpRotationMatrix(const double tux, const double tuy, const double tuz) ;
vpRotationMatrix(const vpQuaternionVector& q);
//! copy operator from vpRotationMatrix
vpRotationMatrix &operator=(const vpRotationMatrix &R);
//! copy operator from vpMatrix (handle with care)
vpRotationMatrix &operator=(const vpMatrix &m) ;
//! operation c = A * b (A is unchanged)
vpTranslationVector operator*(const vpTranslationVector &mat) const ;
//! operation C = A * B (A is unchanged)
vpRotationMatrix operator*(const vpRotationMatrix &B) const ;
//! operation C = A * B (A is unchanged)
vpMatrix operator*(const vpMatrix &B) const ;
// operation v2 = A * v1 (A is unchanged)
vpColVector operator*(const vpColVector &v) const ;
//! overload + operator (to say it forbidden operation, throw exception)
vpRotationMatrix operator+(const vpRotationMatrix &B) const ;
//! overload - operator (to say it forbidden operation, throw exception)
vpRotationMatrix operator-(const vpRotationMatrix &B) const ;
//! transpose
vpRotationMatrix t() const ;
//! invert the rotation matrix
vpRotationMatrix inverse() const ;
//! invert the rotation matrix
void inverse(vpRotationMatrix &M) const;
//! test if the matrix is an rotation matrix
bool isARotationMatrix() const ;
//! Print the matrix as a vector [T thetaU]
void printVector() ;
friend VISP_EXPORT std::ostream &operator << (std::ostream &s, const vpRotationMatrix &m);
//! Transform a vector vpThetaUVector into an rotation matrix
vpRotationMatrix buildFrom(const vpThetaUVector &v) ;
//! Transform a vector reprensenting the euler (Rzyz) angle
//! into a rotation matrix
vpRotationMatrix buildFrom(const vpRzyzVector &v) ;
//! Transform a vector reprensenting the Rxyz angle into a rotation matrix
vpRotationMatrix buildFrom(const vpRxyzVector &v) ;
//! Transform a vector reprensenting the Rzyx angle into a rotation matrix
vpRotationMatrix buildFrom(const vpRzyxVector &v) ;
//! Construction from rotation (theta U parameterization)
vpRotationMatrix buildFrom(const double tux,
const double tuy,
const double tuz) ;
vpRotationMatrix buildFrom(const vpQuaternionVector& q);
private:
static const double threshold;
static const double minimum; // useful only for debug
};
#endif
/*
* Local variables:
* c-basic-offset: 2
* End:
*/
|