Skip to content

AFNI/NIfTI Server

Sections
Personal tools
You are here: Home » AFNI » Documentation

Doxygen Source Code Documentation


Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals   Search  

thd_coords.c File Reference

#include "mrilib.h"
#include "thd.h"

Go to the source code of this file.


Functions

THD_fvec3 THD_3dfind_to_3dmm (THD_3dim_dataset *dset, THD_fvec3 iv)
THD_fvec3 THD_3dind_to_3dmm (THD_3dim_dataset *dset, THD_ivec3 iv)
THD_fvec3 THD_3dind_to_3dmm_no_wod (THD_3dim_dataset *dset, THD_ivec3 iv)
THD_fvec3 THD_3dmm_to_3dfind (THD_3dim_dataset *dset, THD_fvec3 fv)
THD_ivec3 THD_3dmm_to_3dind (THD_3dim_dataset *dset, THD_fvec3 fv)
THD_ivec3 THD_3dmm_to_3dind_no_wod (THD_3dim_dataset *dset, THD_fvec3 fv)
THD_fvec3 THD_3dmm_to_dicomm (THD_3dim_dataset *dset, THD_fvec3 imv)
THD_fvec3 THD_dicomm_to_3dmm (THD_3dim_dataset *dset, THD_fvec3 dicv)
THD_ivec3 THD_fdind_to_3dind (FD_brick *br, THD_ivec3 ib)
THD_ivec3 THD_3dind_to_fdind (FD_brick *br, THD_ivec3 id)
THD_fvec3 THD_fdfind_to_3dfind (FD_brick *br, THD_fvec3 ib)
THD_fvec3 THD_3dfind_to_fdfind (FD_brick *br, THD_fvec3 id)
void THD_coorder_fill (char *in_orcode, THD_coorder *cord)
void THD_dicom_to_coorder (THD_coorder *cord, float *xx, float *yy, float *zz)
void THD_coorder_to_dicom (THD_coorder *cord, float *xx, float *yy, float *zz)

Function Documentation

THD_fvec3 THD_3dfind_to_3dmm THD_3dim_dataset   dset,
THD_fvec3    iv
 

Definition at line 30 of file thd_coords.c.

References CURRENT_DAXES, THD_dataxes::xxdel, THD_dataxes::xxorg, THD_fvec3::xyz, THD_dataxes::yydel, THD_dataxes::yyorg, THD_dataxes::zzdel, and THD_dataxes::zzorg.

Referenced by THD_autonudge(), and THD_cmass().

00032 {
00033    THD_dataxes * daxes ;
00034    THD_fvec3     fv ;
00035 
00036    daxes = CURRENT_DAXES(dset) ;
00037 
00038    fv.xyz[0] = daxes->xxorg + iv.xyz[0] * daxes->xxdel ;
00039    fv.xyz[1] = daxes->yyorg + iv.xyz[1] * daxes->yydel ;
00040    fv.xyz[2] = daxes->zzorg + iv.xyz[2] * daxes->zzdel ;
00041    return fv ;
00042 }

THD_fvec3 THD_3dfind_to_fdfind FD_brick   br,
THD_fvec3    id
 

Definition at line 306 of file thd_coords.c.

References FD_brick::a123, abs, THD_ivec3::ijk, FD_brick::sxyz, and THD_fvec3::xyz.

Referenced by AFNI_brick_to_mri().

00307 {
00308    THD_fvec3 ib ;
00309    int qq , ax ;
00310 
00311    for( qq=0 ; qq < 3 ; qq++ ){
00312       ax = abs( br->a123.ijk[qq] ) - 1 ;
00313 
00314       if( br->a123.ijk[qq] > 0 ) ib.xyz[qq] = id.xyz[ax] ;
00315       else                       ib.xyz[qq] = br->sxyz.ijk[ax] - id.xyz[ax];
00316    }
00317 
00318    return ib ;
00319 }

THD_fvec3 THD_3dind_to_3dmm THD_3dim_dataset   dset,
THD_ivec3    iv
 

Definition at line 46 of file thd_coords.c.

References CURRENT_DAXES, THD_ivec3::ijk, THD_dataxes::xxdel, THD_dataxes::xxorg, THD_fvec3::xyz, THD_dataxes::yydel, THD_dataxes::yyorg, THD_dataxes::zzdel, and THD_dataxes::zzorg.

Referenced by AFNI_brick_to_mri(), AFNI_ijk_to_xyz(), AFNI_marks_action_CB(), AFNI_set_viewpoint(), main(), SUMA_LoadPrepInVol(), THD_open_ctfmri(), and to_3dmm().

00048 {
00049    THD_dataxes * daxes ;
00050    THD_fvec3     fv ;
00051 
00052    daxes = CURRENT_DAXES(dset) ;
00053 
00054    fv.xyz[0] = daxes->xxorg + iv.ijk[0] * daxes->xxdel ;
00055    fv.xyz[1] = daxes->yyorg + iv.ijk[1] * daxes->yydel ;
00056    fv.xyz[2] = daxes->zzorg + iv.ijk[2] * daxes->zzdel ;
00057    return fv ;
00058 }

THD_fvec3 THD_3dind_to_3dmm_no_wod THD_3dim_dataset   dset,
THD_ivec3    iv
 

Definition at line 62 of file thd_coords.c.

References THD_3dim_dataset::daxes, THD_ivec3::ijk, THD_dataxes::xxdel, THD_dataxes::xxorg, THD_fvec3::xyz, THD_dataxes::yydel, THD_dataxes::yyorg, THD_dataxes::zzdel, and THD_dataxes::zzorg.

Referenced by display_coords().

00064 {
00065    THD_dataxes * daxes ;
00066    THD_fvec3     fv ;
00067 
00068    daxes = dset->daxes ;
00069 
00070    fv.xyz[0] = daxes->xxorg + iv.ijk[0] * daxes->xxdel ;
00071    fv.xyz[1] = daxes->yyorg + iv.ijk[1] * daxes->yydel ;
00072    fv.xyz[2] = daxes->zzorg + iv.ijk[2] * daxes->zzdel ;
00073    return fv ;
00074 }

THD_ivec3 THD_3dind_to_fdind FD_brick   br,
THD_ivec3    id
 

Definition at line 274 of file thd_coords.c.

References FD_brick::a123, abs, THD_ivec3::ijk, and FD_brick::sxyz.

Referenced by AFNI_brick_to_mri(), AFNI_overlay(), AFNI_seq_send_CB(), AFNI_set_valabel(), AFNI_set_viewpoint(), and main().

00275 {
00276    THD_ivec3 ib ;
00277    int qq , ax ;
00278 
00279    for( qq=0 ; qq < 3 ; qq++ ){
00280       ax = abs( br->a123.ijk[qq] ) - 1 ;
00281 
00282       if( br->a123.ijk[qq] > 0 ) ib.ijk[qq] = id.ijk[ax] ;
00283       else                       ib.ijk[qq] = br->sxyz.ijk[ax] - id.ijk[ax];
00284    }
00285 
00286    return ib ;
00287 }

THD_fvec3 THD_3dmm_to_3dfind THD_3dim_dataset   dset,
THD_fvec3    fv
 

Definition at line 78 of file thd_coords.c.

References CURRENT_DAXES, THD_dataxes::nxx, THD_dataxes::nyy, THD_dataxes::nzz, THD_dataxes::xxdel, THD_dataxes::xxorg, THD_fvec3::xyz, THD_dataxes::yydel, THD_dataxes::yyorg, THD_dataxes::zzdel, and THD_dataxes::zzorg.

Referenced by AFNI_brick_to_mri(), AFNI_make_voxwarp(), and main().

00080 {
00081    THD_dataxes * daxes ;
00082    THD_fvec3     iv ;
00083 
00084    daxes = CURRENT_DAXES(dset) ;
00085 
00086    iv.xyz[0] = (fv.xyz[0] - daxes->xxorg) / daxes->xxdel ;
00087    iv.xyz[1] = (fv.xyz[1] - daxes->yyorg) / daxes->yydel ;
00088    iv.xyz[2] = (fv.xyz[2] - daxes->zzorg) / daxes->zzdel ;
00089 
00090         if( iv.xyz[0] < 0            ) iv.xyz[0] = 0 ;
00091    else if( iv.xyz[0] > daxes->nxx-1 ) iv.xyz[0] = daxes->nxx-1 ;
00092 
00093         if( iv.xyz[1] <  0           ) iv.xyz[1] = 0 ;
00094    else if( iv.xyz[1] > daxes->nyy-1 ) iv.xyz[1] = daxes->nyy-1 ;
00095 
00096         if( iv.xyz[2] < 0            ) iv.xyz[2] = 0 ;
00097    else if( iv.xyz[2] > daxes->nzz-1 ) iv.xyz[2] = daxes->nzz-1 ;
00098 
00099    return iv ;
00100 }

THD_ivec3 THD_3dmm_to_3dind THD_3dim_dataset   dset,
THD_fvec3    fv
 

Definition at line 104 of file thd_coords.c.

References CURRENT_DAXES, THD_ivec3::ijk, THD_dataxes::nxx, THD_dataxes::nyy, THD_dataxes::nzz, THD_dataxes::xxdel, THD_dataxes::xxorg, THD_fvec3::xyz, THD_dataxes::yydel, THD_dataxes::yyorg, THD_dataxes::zzdel, and THD_dataxes::zzorg.

Referenced by AFNI_crosshair_label(), AFNI_initialize_view(), AFNI_jumpto_dicom(), AFNI_lock_carryout(), AFNI_marktog_CB(), AFNI_modify_viewing(), AFNI_overlay(), AFNI_setup_viewing(), AFNI_talto_CB(), AFNI_xyz_to_ijk(), EDIT_one_dataset(), from_3dmm(), insert_list(), main(), process_NIML_Node_ROI(), RCREND_xhair_overlay(), RCREND_xhair_underlay(), SUMA_Find_IminImax(), SUMA_Find_IminImax_Avg(), SUMA_FormAfnidset(), SUMA_make_vnlist(), THD_autonudge(), TT_whereami(), and xyz_to_ijk().

00106 {
00107    THD_dataxes * daxes ;
00108    THD_ivec3     iv ;
00109 
00110    daxes = CURRENT_DAXES(dset) ;
00111 
00112    iv.ijk[0] = (fv.xyz[0] - daxes->xxorg) / daxes->xxdel + 0.499 ;
00113    iv.ijk[1] = (fv.xyz[1] - daxes->yyorg) / daxes->yydel + 0.499 ;
00114    iv.ijk[2] = (fv.xyz[2] - daxes->zzorg) / daxes->zzdel + 0.499 ;
00115 
00116         if( iv.ijk[0] < 0            ) iv.ijk[0] = 0 ;
00117    else if( iv.ijk[0] > daxes->nxx-1 ) iv.ijk[0] = daxes->nxx-1 ;
00118 
00119         if( iv.ijk[1] < 0            ) iv.ijk[1] = 0 ;
00120    else if( iv.ijk[1] > daxes->nyy-1 ) iv.ijk[1] = daxes->nyy-1 ;
00121 
00122         if( iv.ijk[2] < 0            ) iv.ijk[2] = 0 ;
00123    else if( iv.ijk[2] > daxes->nzz-1 ) iv.ijk[2] = daxes->nzz-1 ;
00124 
00125    return iv ;
00126 }

THD_ivec3 THD_3dmm_to_3dind_no_wod THD_3dim_dataset   dset,
THD_fvec3    fv
 

Definition at line 131 of file thd_coords.c.

References THD_3dim_dataset::daxes, THD_ivec3::ijk, THD_dataxes::nxx, THD_dataxes::nyy, THD_dataxes::nzz, THD_dataxes::xxdel, THD_dataxes::xxorg, THD_fvec3::xyz, THD_dataxes::yydel, THD_dataxes::yyorg, THD_dataxes::zzdel, and THD_dataxes::zzorg.

Referenced by segment_imarr().

00133 {
00134    THD_dataxes * daxes ;
00135    THD_ivec3     iv ;
00136 
00137    daxes = dset->daxes ;
00138 
00139    iv.ijk[0] = (fv.xyz[0] - daxes->xxorg) / daxes->xxdel + 0.499 ;
00140    iv.ijk[1] = (fv.xyz[1] - daxes->yyorg) / daxes->yydel + 0.499 ;
00141    iv.ijk[2] = (fv.xyz[2] - daxes->zzorg) / daxes->zzdel + 0.499 ;
00142 
00143         if( iv.ijk[0] < 0            ) iv.ijk[0] = 0 ;
00144    else if( iv.ijk[0] > daxes->nxx-1 ) iv.ijk[0] = daxes->nxx-1 ;
00145 
00146         if( iv.ijk[1] < 0            ) iv.ijk[1] = 0 ;
00147    else if( iv.ijk[1] > daxes->nyy-1 ) iv.ijk[1] = daxes->nyy-1 ;
00148 
00149         if( iv.ijk[2] < 0            ) iv.ijk[2] = 0 ;
00150    else if( iv.ijk[2] > daxes->nzz-1 ) iv.ijk[2] = daxes->nzz-1 ;
00151 
00152    return iv ;
00153 }

THD_fvec3 THD_3dmm_to_dicomm THD_3dim_dataset   dset,
THD_fvec3    imv
 

Definition at line 163 of file thd_coords.c.

References THD_3dim_dataset::daxes, ORI_A2P_TYPE, ORI_I2S_TYPE, ORI_L2R_TYPE, ORI_P2A_TYPE, ORI_R2L_TYPE, ORI_S2I_TYPE, THD_FATAL_ERROR, THD_dataxes::xxorient, THD_fvec3::xyz, THD_dataxes::yyorient, and THD_dataxes::zzorient.

Referenced by AFNI_brick_to_mri(), AFNI_dicomm_to_xyz(), AFNI_get_xhair_node(), AFNI_init_warp(), AFNI_make_warp(), AFNI_marks_quality_check(), AFNI_set_viewpoint(), AFNI_setup_viewing(), AFNI_xyz_to_dicomm(), brainnormalize_coord(), display_coords(), main(), PR_get_range(), SUMA_LoadPrepInVol(), THD_autonudge(), THD_cmass(), THD_dataset_center(), THD_dataset_info(), THD_dicomm_to_surefit(), THD_open_ctfmri(), THD_surefit_to_dicomm(), and to_3dmm().

00165 {
00166    THD_fvec3 dicv ;
00167    float xim,yim,zim , xdic,ydic,zdic ;
00168 
00169    xim = imv.xyz[0] ; yim = imv.xyz[1] ; zim = imv.xyz[2] ;
00170 
00171    switch( dset->daxes->xxorient ){
00172       case ORI_R2L_TYPE:
00173       case ORI_L2R_TYPE: xdic = xim ; break ;
00174       case ORI_P2A_TYPE:
00175       case ORI_A2P_TYPE: ydic = xim ; break ;
00176       case ORI_I2S_TYPE:
00177       case ORI_S2I_TYPE: zdic = xim ; break ;
00178 
00179       default: THD_FATAL_ERROR("illegal xxorient code") ;
00180    }
00181 
00182    switch( dset->daxes->yyorient ){
00183       case ORI_R2L_TYPE:
00184       case ORI_L2R_TYPE: xdic = yim ; break ;
00185       case ORI_P2A_TYPE:
00186       case ORI_A2P_TYPE: ydic = yim ; break ;
00187       case ORI_I2S_TYPE:
00188       case ORI_S2I_TYPE: zdic = yim ; break ;
00189 
00190       default: THD_FATAL_ERROR("illegal yyorient code") ;
00191    }
00192 
00193    switch( dset->daxes->zzorient ){
00194       case ORI_R2L_TYPE:
00195       case ORI_L2R_TYPE: xdic = zim ; break ;
00196       case ORI_P2A_TYPE:
00197       case ORI_A2P_TYPE: ydic = zim ; break ;
00198       case ORI_I2S_TYPE:
00199       case ORI_S2I_TYPE: zdic = zim ; break ;
00200 
00201       default: THD_FATAL_ERROR("illegal zzorient code") ;
00202    }
00203 
00204    dicv.xyz[0] = xdic ; dicv.xyz[1] = ydic ; dicv.xyz[2] = zdic ;
00205    return dicv ;
00206 }

void THD_coorder_fill char *    in_orcode,
THD_coorder   cord
 

Definition at line 323 of file thd_coords.c.

References THD_coorder::first, OR3OK, ORCODE, THD_coorder::orcode, ORI_A2P_TYPE, ORI_I2S_TYPE, ORI_R2L_TYPE, THD_coorder::second, THD_coorder::third, THD_coorder::xxor, THD_coorder::xxsign, THD_coorder::yyor, THD_coorder::yysign, THD_coorder::zzor, and THD_coorder::zzsign.

Referenced by AFNI_crosshair_pop_CB(), AFNI_parse_args(), CL_read_opts(), CORD_main(), ENV_coorder(), initialize_program(), main(), SUMA_Align_to_VolPar(), and SUMA_FormAfnidset().

00324 {
00325    char acod , orcode[4] ;
00326    int xx,yy,zz , ss1,ss2,ss3 , ii,ll ;
00327 
00328    if( cord == NULL ) return ;
00329 
00330    /* default values */
00331 
00332    cord->xxsign = cord->yysign = cord->zzsign = 1 ;
00333    cord->first  = 0 ;
00334    cord->second = 1 ;
00335    cord->third  = 2 ;
00336    cord->xxor   = ORI_R2L_TYPE ;
00337    cord->yyor   = ORI_A2P_TYPE ;
00338    cord->zzor   = ORI_I2S_TYPE ;
00339    strcpy(cord->orcode,"RAI") ;
00340 
00341    /* check string for OKness */
00342 
00343    if( in_orcode == NULL ) return ;
00344    strncpy(orcode,in_orcode,3) ; orcode[3] = '\0' ;
00345    ll = strlen(orcode) ; if( ll != 3 ) return ;
00346    for( ii=0 ; ii < 3 ; ii++ ) orcode[ii] = toupper(orcode[ii]) ;
00347    if( strncmp(orcode,"FLI",3) == 0 ) strcpy(orcode,"LPI") ;
00348 
00349    /* extract direction codes */
00350 
00351    acod = orcode[0] ; xx = ORCODE(acod) ;
00352    acod = orcode[1] ; yy = ORCODE(acod) ;
00353    acod = orcode[2] ; zz = ORCODE(acod) ;
00354 
00355    /* check direction codes for OKness */
00356 
00357    if( xx<0 || yy<0 || zz<0 || ! OR3OK(xx,yy,zz) ) return ;
00358 
00359    /* all is OK.  get signs of orientations */
00360 
00361    ss1 = (ORIENT_sign[xx] == '-') ? -1 : 1 ;
00362    ss2 = (ORIENT_sign[yy] == '-') ? -1 : 1 ;
00363    ss3 = (ORIENT_sign[zz] == '-') ? -1 : 1 ;
00364 
00365    /* whose on first? */
00366 
00367    cord->first  = xx / 2 ;
00368    cord->second = yy / 2 ;
00369    cord->third  = zz / 2 ;
00370 
00371    cord->xxsign = (cord->first ==0) ? ss1
00372                  :(cord->second==0) ? ss2 : ss3 ;
00373 
00374    cord->yysign = (cord->first ==1) ? ss1
00375                  :(cord->second==1) ? ss2 : ss3 ;
00376 
00377    cord->zzsign = (cord->first ==2) ? ss1
00378                  :(cord->second==2) ? ss2 : ss3 ;
00379 
00380    cord->xxor = xx ;
00381    cord->yyor = yy ;
00382    cord->zzor = zz ;
00383 
00384    strcpy(cord->orcode,orcode) ;
00385    return ;
00386 }

void THD_coorder_to_dicom THD_coorder   cord,
float *    xx,
float *    yy,
float *    zz
 

Definition at line 423 of file thd_coords.c.

References THD_coorder::first, THD_coorder::second, THD_coorder::xxsign, THD_coorder::yysign, and THD_coorder::zzsign.

Referenced by AFNI_jumpto_CB(), from_3dmm(), main(), SUMA_Align_to_VolPar(), and SUMA_FormAfnidset().

00425 {
00426    float xval , yval , zval ;
00427 
00428    if( cord == NULL ) return ;
00429 
00430    /* unscramble order */
00431 
00432    xval = (cord->first  == 0) ? (*xx)
00433          :(cord->second == 0) ? (*yy) : (*zz) ;
00434 
00435    yval = (cord->first  == 1) ? (*xx)
00436          :(cord->second == 1) ? (*yy) : (*zz) ;
00437 
00438    zval = (cord->first  == 2) ? (*xx)
00439          :(cord->second == 2) ? (*yy) : (*zz) ;
00440 
00441    /* change signs */
00442 
00443    *xx = cord->xxsign * xval ;
00444    *yy = cord->yysign * yval ;
00445    *zz = cord->zzsign * zval ;
00446 
00447    return ;
00448 }

void THD_dicom_to_coorder THD_coorder   cord,
float *    xx,
float *    yy,
float *    zz
 

Definition at line 392 of file thd_coords.c.

References THD_coorder::first, THD_coorder::second, THD_coorder::third, THD_coorder::xxsign, THD_coorder::yysign, and THD_coorder::zzsign.

Referenced by main(), and to_3dmm().

00394 {
00395    float xval , yval , zval ;
00396 
00397    if( cord == NULL ) return ;
00398 
00399    /* changes signs first */
00400 
00401    xval = cord->xxsign * (*xx) ;
00402    yval = cord->yysign * (*yy) ;
00403    zval = cord->zzsign * (*zz) ;
00404 
00405    /* scramble order */
00406 
00407    *xx = (cord->first == 0) ? xval
00408         :(cord->first == 1) ? yval : zval ;
00409 
00410    *yy = (cord->second == 0) ? xval
00411         :(cord->second == 1) ? yval : zval ;
00412 
00413    *zz = (cord->third == 0) ? xval
00414         :(cord->third == 1) ? yval : zval ;
00415 
00416    return ;
00417 }

THD_fvec3 THD_dicomm_to_3dmm THD_3dim_dataset   dset,
THD_fvec3    dicv
 

Definition at line 212 of file thd_coords.c.

References THD_3dim_dataset::daxes, ORI_A2P_TYPE, ORI_I2S_TYPE, ORI_L2R_TYPE, ORI_P2A_TYPE, ORI_R2L_TYPE, ORI_S2I_TYPE, THD_FATAL_ERROR, THD_dataxes::xxorient, THD_fvec3::xyz, THD_dataxes::yyorient, and THD_dataxes::zzorient.

Referenced by AFNI_brick_to_mri(), AFNI_crosshair_label(), AFNI_initialize_view(), AFNI_jumpto_dicom(), AFNI_lock_carryout(), AFNI_make_voxwarp(), AFNI_modify_viewing(), AFNI_overlay(), AFNI_setup_viewing(), AFNI_talto_CB(), compute_results(), DRAW_ttatlas_CB(), from_3dmm(), init_seg_endpoints(), main(), process_NIML_Node_ROI(), RCREND_xhair_overlay(), RCREND_xhair_underlay(), SUMA_Find_IminImax(), SUMA_Find_IminImax_Avg(), SUMA_FormAfnidset(), SUMA_make_vnlist(), THD_autonudge(), and xyz_to_ijk().

00214 {
00215    THD_fvec3 imv ;
00216    float xim,yim,zim , xdic,ydic,zdic ;
00217 
00218    xdic = dicv.xyz[0] ; ydic = dicv.xyz[1] ; zdic = dicv.xyz[2] ;
00219 
00220    switch( dset->daxes->xxorient ){
00221       case ORI_R2L_TYPE:
00222       case ORI_L2R_TYPE: xim = xdic ; break ;
00223       case ORI_P2A_TYPE:
00224       case ORI_A2P_TYPE: xim = ydic ; break ;
00225       case ORI_I2S_TYPE:
00226       case ORI_S2I_TYPE: xim = zdic ; break ;
00227 
00228       default: THD_FATAL_ERROR("illegal xxorient code") ;
00229    }
00230 
00231    switch( dset->daxes->yyorient ){
00232       case ORI_R2L_TYPE:
00233       case ORI_L2R_TYPE: yim = xdic ; break ;
00234       case ORI_P2A_TYPE:
00235       case ORI_A2P_TYPE: yim = ydic ; break ;
00236       case ORI_I2S_TYPE:
00237       case ORI_S2I_TYPE: yim = zdic ; break ;
00238 
00239       default: THD_FATAL_ERROR("illegal yyorient code") ;
00240    }
00241 
00242    switch( dset->daxes->zzorient ){
00243       case ORI_R2L_TYPE:
00244       case ORI_L2R_TYPE: zim = xdic ; break ;
00245       case ORI_P2A_TYPE:
00246       case ORI_A2P_TYPE: zim = ydic ; break ;
00247       case ORI_I2S_TYPE:
00248       case ORI_S2I_TYPE: zim = zdic ; break ;
00249 
00250       default: THD_FATAL_ERROR("illegal zzorient code") ;
00251    }
00252 
00253    imv.xyz[0] = xim ; imv.xyz[1] = yim ; imv.xyz[2] = zim ;
00254    return imv ;
00255 }

THD_fvec3 THD_fdfind_to_3dfind FD_brick   br,
THD_fvec3    ib
 

Definition at line 291 of file thd_coords.c.

References FD_brick::a123, abs, THD_ivec3::ijk, FD_brick::sxyz, and THD_fvec3::xyz.

00292 {
00293    THD_fvec3 id ;
00294    int qq , ax ;
00295 
00296    for( qq=0 ; qq < 3 ; qq++ ){
00297       ax = abs( br->a123.ijk[qq] ) - 1 ;   /* 0,1,2, for x,y,z */
00298 
00299       if( br->a123.ijk[qq] > 0 ) id.xyz[ax] = ib.xyz[qq] ;
00300       else                       id.xyz[ax] = br->sxyz.ijk[ax] - ib.xyz[qq];
00301    }
00302 
00303    return id ;
00304 }

THD_ivec3 THD_fdind_to_3dind FD_brick   br,
THD_ivec3    ib
 

Definition at line 259 of file thd_coords.c.

References FD_brick::a123, abs, THD_ivec3::ijk, and FD_brick::sxyz.

Referenced by AFNI_brick_to_mri(), AFNI_gra_send_CB(), AFNI_seq_send_CB(), FD_brick_to_series(), GRA_drawing_EV(), GRA_handle_keypress(), plot_graphs(), and redraw_graph().

00260 {
00261    THD_ivec3 id ;
00262    int qq , ax ;
00263 
00264    for( qq=0 ; qq < 3 ; qq++ ){
00265       ax = abs( br->a123.ijk[qq] ) - 1 ;   /* 0,1,2, for x,y,z */
00266 
00267       if( br->a123.ijk[qq] > 0 ) id.ijk[ax] = ib.ijk[qq] ;
00268       else                       id.ijk[ax] = br->sxyz.ijk[ax] - ib.ijk[qq];
00269    }
00270 
00271    return id ;
00272 }
 

Powered by Plone

This site conforms to the following standards: