Doxygen Source Code Documentation
        
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals   Search   
thd_shear3d.h
Go to the documentation of this file.00001 
00002 
00003 
00004 
00005 
00006    
00007 #ifndef _THD_SHEAR3D_HEADER_
00008 #define _THD_SHEAR3D_HEADER_
00009 
00010 #include "vecmat.h"
00011 
00012 #include <stdio.h>
00013 #include <stdlib.h>
00014 #include "mrilib.h"
00015 
00016 #undef  DB
00017 #define DB fprintf(stderr,"in %s at line %d\n",__FILE__,__LINE__)
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 
00028 
00029 typedef struct {
00030    int    ax[4] , flip0,flip1;
00031    double scl[4][3] , sft[4] ;
00032 } MCW_3shear ;
00033 
00034 #define DUMP_3SHEAR(str,sss)                                                      \
00035   fprintf(stderr,"shear %s: flip0=%d flip1=%d\n"                                  \
00036          " #0: ax=%d scl=%13.6g %13.6g %13.6g sft=%13.6g\n"                       \
00037          " #1: ax=%d scl=%13.6g %13.6g %13.6g sft=%13.6g\n"                       \
00038          " #2: ax=%d scl=%13.6g %13.6g %13.6g sft=%13.6g\n"                       \
00039          " #3: ax=%d scl=%13.6g %13.6g %13.6g sft=%13.6g\n" ,                     \
00040    str , (sss).flip0 , (sss).flip1 ,                                              \
00041    (sss).ax[0], (sss).scl[0][0], (sss).scl[0][1], (sss).scl[0][2], (sss).sft[0],  \
00042    (sss).ax[1], (sss).scl[1][0], (sss).scl[1][1], (sss).scl[1][2], (sss).sft[1],  \
00043    (sss).ax[2], (sss).scl[2][0], (sss).scl[2][1], (sss).scl[2][2], (sss).sft[2],  \
00044    (sss).ax[3], (sss).scl[3][0], (sss).scl[3][1], (sss).scl[3][2], (sss).sft[3]  )
00045 
00046 #define ISVALID_3SHEAR(sss)    ((sss).ax[0] >= 0)
00047 #define INVALIDATE_3SHEAR(sss) ((sss).ax[0] = -1)
00048 
00049 
00050 
00051 extern double norm_3shear( MCW_3shear sh ) ;
00052 extern THD_dmat33 make_shear_matrix( int ax , double scl[3] ) ;
00053 extern MCW_3shear permute_3shear( MCW_3shear shin , int ox1, int ox2, int ox3 ) ;
00054 extern THD_dmat33 permute_dmat33( THD_dmat33 q , int ox1, int ox2, int ox3 ) ;
00055 extern THD_dfvec3 permute_dfvec3( THD_dfvec3 q , int ox1, int ox2, int ox3 ) ;
00056 extern MCW_3shear shear_xzyx( THD_dmat33 *q , THD_dfvec3 *xyzdel ) ;
00057 extern MCW_3shear shear_arb( THD_dmat33 *q , THD_dfvec3 *xyzdel , int ox1,int ox2,int ox3 ) ;
00058 extern MCW_3shear shear_best( THD_dmat33 * q , THD_dfvec3 * xyzdel ) ;
00059 extern THD_dmat33 rot_to_matrix( int ax1 , double th1 ,
00060                                  int ax2 , double th2 , int ax3 , double th3  ) ;
00061 extern MCW_3shear rot_to_shear( int ax1 , double th1 ,
00062                          int ax2 , double th2 ,
00063                          int ax3 , double th3 , 
00064                          int dcode , double dx , double dy , double dz ,
00065                          double xdel , double ydel , double zdel ) ;
00066 extern MCW_3shear rot_to_shear_matvec( THD_dmat33 rmat , THD_dfvec3 tvec , 
00067                                 double xdel , double ydel , double zdel )  ;
00068 extern THD_dmat33 DMAT_xt_x( THD_dmat33 inmat ) ;
00069 extern THD_dmat33 DMAT_x_xt( THD_dmat33 inmat ) ;   
00070 extern THD_dvecmat DMAT_symeig( THD_dmat33 inmat ) ;
00071 extern THD_dmat33 DMAT_pow( THD_dmat33 inmat , double pp ) ;
00072 extern THD_dmat33 DMAT_svdrot_old( THD_dmat33 inmat ) ;
00073 extern THD_dmat33 DMAT_svdrot_new( THD_dmat33 inmat ) ;  
00074 extern THD_dmat33 DMAT_svdrot_newer( THD_dmat33 inmat ) ;  
00075 extern THD_dvecmat DLSQ_rot_trans( int n, THD_dfvec3 * xx, THD_dfvec3 * yy, double * ww ) ;
00076 
00077 #endif