Main Page | Modules | Class List | File List | Class Members | File Members

euclid3D.h

Go to the documentation of this file.
00001 
00014 /* This library is free software; you can redistribute it and/or
00015    modify it under the terms of the GNU Lesser General Public
00016    License as published by the Free Software Foundation; either
00017    version 2.1 of the License, or (at your option) any later version.
00018 
00019    This library is distributed in the hope that it will be useful,
00020    but WITHOUT ANY WARRANTY; without even the implied warranty of
00021    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00022    Lesser General Public License for more details.
00023 
00024    You should have received a copy of the GNU Lesser General Public
00025    License along with this library; if not, write to the Free Software
00026    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00027 */
00028 
00029 #ifndef _GAN_EUCLID3D_H
00030 #define _GAN_EUCLID3D_H
00031 
00032 #ifdef __cplusplus
00033 extern "C" {
00034 #endif
00035 
00036 #include <gandalf/vision/rotate3D.h>
00037 #include <gandalf/linalg/4x4matrix.h>
00038 #include <gandalf/linalg/3x4matrix.h>
00039 
00053 typedef struct
00054 {
00056    Gan_Rot3D   rot;
00057 
00059    Gan_Vector3 trans;
00060 } Gan_Euclid3D;
00061 
00065 typedef struct Gan_Euclid3D_TRCov
00066 {
00068    Gan_Rot3D_Type type;
00069 
00071    union
00072    {
00074       Gan_Matrix34 q;
00075 
00077       Gan_Matrix33 le;
00078    } d;
00079 } Gan_Euclid3D_TRCov;
00080 
00084 typedef struct
00085 {
00087    Gan_Rot3D_Cov      Crr;
00088 
00090    Gan_Euclid3D_TRCov Ctr;
00091 
00093    Gan_SquMatrix33    Ctt;
00094 } Gan_Euclid3r_Cov;
00095 
00096  Gan_Bool gan_euclid3D_build_quaternion ( Gan_Euclid3D *euc,
00097                                          double TX, double TY, double TZ,
00098                                          double q0, double q1,
00099                                          double q2, double q3 );
00100  Gan_Bool gan_euclid3D_build_exponential ( Gan_Euclid3D *euc,
00101                                           double TX, double TY, double TZ,
00102                                           double rx, double ry, double rz );
00103  Gan_Bool gan_euclid3D_build_angle_axis ( Gan_Euclid3D *euc,
00104                                          double TX, double TY, double TZ,
00105                                          double angle,
00106                                          double ax, double ay, double az );
00107  Gan_Bool gan_euclid3D_build_matrix ( Gan_Euclid3D *euc,
00108                                      double TX, double TY, double TZ,
00109                                      double Rxx, double Rxy, double Rxz,
00110                                      double Ryx, double Ryy, double Ryz,
00111                                      double Rzx, double Rzy, double Rzz );
00112  void         gan_euclid3D_ident_q ( Gan_Euclid3D *euc,
00113                                     Gan_Rot3D_Type rot_type );
00114  Gan_Euclid3D gan_euclid3D_ident_s ( Gan_Rot3D_Type rot_type );
00115  Gan_Bool     gan_euclid3D_scale_q ( Gan_Euclid3D *euc_src, double scale,
00116                                     Gan_Euclid3D *euc_dest );
00117  Gan_Euclid3D gan_euclid3D_scale_s ( Gan_Euclid3D *euc, double scale );
00118 
00124  Gan_Bool gan_euclid3D_scale_i ( Gan_Euclid3D *euc1, double s );
00125 
00131  Gan_Bool gan_euclid3D_divide_q ( Gan_Euclid3D *euc1, double s,
00132                                  Gan_Euclid3D *euc2 );
00133 
00139  Gan_Bool gan_euclid3D_divide_i ( Gan_Euclid3D *euc1, double s );
00140 
00146  Gan_Bool gan_euclid3D_add_q ( Gan_Euclid3D *euc1, Gan_Euclid3D *euc2,
00147                               Gan_Euclid3D *euc3 );
00148 
00154  Gan_Bool gan_euclid3D_sub_q ( Gan_Euclid3D *euc1, Gan_Euclid3D *euc2,
00155                               Gan_Euclid3D *euc3 );
00156 
00165 #ifdef __cplusplus
00166 }
00167 #endif
00168 
00169 #endif /* #ifndef _GAN_EUCLID3D_H */

Generated on Fri Mar 17 12:44:47 2006 by  doxygen 1.3.9.1