00001 /**************************************************************************** 00002 * 00003 * $Id: vpQuaternionVector.h 3506 2011-11-29 19:29:31Z fspindle $ 00004 * 00005 * This file is part of the ViSP software. 00006 * Copyright (C) 2005 - 2011 by INRIA. All rights reserved. 00007 * 00008 * This software is free software; you can redistribute it and/or 00009 * modify it under the terms of the GNU General Public License 00010 * ("GPL") version 2 as published by the Free Software Foundation. 00011 * See the file LICENSE.txt at the root directory of this source 00012 * distribution for additional information about the GNU GPL. 00013 * 00014 * For using ViSP with software that can not be combined with the GNU 00015 * GPL, please contact INRIA about acquiring a ViSP Professional 00016 * Edition License. 00017 * 00018 * See http://www.irisa.fr/lagadic/visp/visp.html for more information. 00019 * 00020 * This software was developed at: 00021 * INRIA Rennes - Bretagne Atlantique 00022 * Campus Universitaire de Beaulieu 00023 * 35042 Rennes Cedex 00024 * France 00025 * http://www.irisa.fr/lagadic 00026 * 00027 * If you have questions regarding the use of this file, please contact 00028 * INRIA at visp@inria.fr 00029 * 00030 * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 00031 * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 00032 * 00033 * 00034 * Description: 00035 * Quaternion definition. 00036 * 00037 * Authors: 00038 * Filip Novotny 00039 * 00040 *****************************************************************************/ 00041 00042 00043 00044 #ifndef __QUATERNIONVECTOR_H__ 00045 #define __QUATERNIONVECTOR_H__ 00046 00055 #include <visp/vpConfig.h> 00056 00057 #if VISP_VERSION_INT <= (2<<16 | 6<<8 | 1) 00058 00059 #include <visp/vpRotationMatrix.h> 00060 #include <visp/vpColVector.h> 00061 00062 00080 class VISP_EXPORT vpQuaternionVector : public vpColVector 00081 { 00082 private: 00083 static const double minimum; 00084 double r[4]; 00085 public: 00086 00087 vpQuaternionVector() ; 00088 vpQuaternionVector(const double x, const double y, const double z,const double w) ; 00089 vpQuaternionVector(const vpQuaternionVector &q); 00090 vpQuaternionVector(const vpRotationMatrix &R); 00091 00092 void buildFrom(const vpRotationMatrix& R); 00093 00094 void set(const double x, const double y, const double z,const double w) ; 00095 unsigned int size(){return 4;} 00097 inline double x() const {return r[0];} 00099 inline double y() const {return r[1];} 00101 inline double z() const {return r[2];} 00103 inline double w() const {return r[3];} 00104 00105 vpQuaternionVector operator+( vpQuaternionVector &q) ; 00106 vpQuaternionVector operator-( vpQuaternionVector &q) ; 00107 vpQuaternionVector operator-() ; 00108 vpQuaternionVector operator*(const double l) ; 00109 vpQuaternionVector operator* ( vpQuaternionVector &rq) ; 00110 vpQuaternionVector &operator=( vpQuaternionVector &q); 00111 00112 00113 } ; 00114 00115 #endif 00116 #endif 00117 00118 /* 00119 * Local variables: 00120 * c-basic-offset: 4 00121 * End: 00122 */