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  

warp3D_sharm.c File Reference

#include <stdlib.h>

Go to the source code of this file.


Functions

void warp3D_sharm2 (int npt, float *wt, float *x, float *y, float *z, float *v)
void warp3D_sharm2_grad (int npt, float *wt, float *x, float *y, float *z, float *gx, float *gy, float *gz)
void warp3D_sharm3 (int npt, float *wt, float *x, float *y, float *z, float *v)
void warp3D_sharm3_grad (int npt, float *wt, float *x, float *y, float *z, float *gx, float *gy, float *gz)

Function Documentation

void warp3D_sharm2 int    npt,
float *    wt,
float *    x,
float *    y,
float *    z,
float *    v
 

Definition at line 15 of file warp3D_sharm.c.

References a, i, and v.

00017 {
00018    int i ;
00019    float xq,yq,zq , a , b1,b2,b3 , c4,c5,c6,c7,c8 ;
00020 
00021    if( npt < 1 || wt == NULL || x == NULL ||
00022                   y  == NULL || z == NULL || v == NULL ) return ;
00023 
00024    a  = wt[0] ; b1 = wt[1] ; b2 = wt[2] ; b3 = wt[3] ;
00025    c4 = wt[4] ; c5 = wt[5] ; c6 = wt[6] ; c7 = wt[7] ; c8 = wt[8] ;
00026 
00027    for( i=0 ; i < npt ; i++ ){
00028       xq = x[i]*x[i] ; yq = y[i]*y[i] ; zq = z[i]*z[i] ;
00029       v[i] =  a + b2*y[i]
00030             + c4 * (2.0*zq-xq-yq)
00031             + c7 * (xq-yq)
00032             + (c5*x[i] + c6*y[i] + b3) * z[i]
00033             + (c8*y[i] + b1) * x[i] ;
00034    }
00035 }

void warp3D_sharm2_grad int    npt,
float *    wt,
float *    x,
float *    y,
float *    z,
float *    gx,
float *    gy,
float *    gz
 

Definition at line 39 of file warp3D_sharm.c.

References gx, gy, and i.

00042 {
00043    int i ;
00044    float b1,b2,b3 , c4,c5,c6,c7,c8 ;
00045    float gg,hh ;
00046 
00047    if( npt < 1   || wt == NULL || x == NULL ||
00048                     y  == NULL || z == NULL ||
00049       gx == NULL || gy == NULL || gz == NULL  ) return ;
00050 
00051                 b1 = wt[1] ; b2 = wt[2] ; b3 = wt[3] ;
00052    c4 = wt[4] ; c5 = wt[5] ; c6 = wt[6] ; c7 = wt[7] ; c8 = wt[8] ;
00053 
00054    gg = 2.0*(c7-c4) ; hh = -2.0*(c4+c7) ;
00055 
00056    for( i=0 ; i < npt ; i++ ){
00057       gx[i] = b1 + gg*x[i] + c8*y[i] + c5*z[i] ;
00058       gy[i] = b2 + c8*x[i] + hh*y[i] + c6*z[i] ;
00059       gz[i] = b3 + c5*x[i] + c6*y[i] + c4*z[i] ;
00060    }
00061 }

void warp3D_sharm3 int    npt,
float *    wt,
float *    x,
float *    y,
float *    z,
float *    v
 

Definition at line 82 of file warp3D_sharm.c.

References a, i, and v.

00084 {
00085    int i ;
00086    float xq,yq,zq,rr , a , b1,b2,b3 , c4,c5,c6,c7,c8 , d9,d10,d11,d12,d13,d14,d15;
00087 
00088    if( npt < 1 || wt == NULL || x == NULL ||
00089                   y  == NULL || z == NULL || v == NULL ) return ;
00090 
00091    a  = wt[0] ; b1 = wt[1] ; b2 = wt[2] ; b3 = wt[3] ;
00092    c4 = wt[4] ; c5 = wt[5] ; c6 = wt[6] ; c7 = wt[7] ; c8 = wt[8] ;
00093 
00094    d9  = wt[9]  ; d10 = wt[10] ; d11 = wt[11] ; d12 = wt[12] ;
00095    d13 = wt[13] ; d14 = wt[14] ; d15 = wt[15] ;
00096 
00097    for( i=0 ; i < npt ; i++ ){
00098       xq = x[i]*x[i] ; yq = y[i]*y[i] ; zq = z[i]*z[i] ; rr = xq+yq ;
00099       v[i] =  a
00100             + ( b2 + d15 * (3.0*xq-yq) ) * y[i]
00101             + c4 * (2.0*zq-xq-yq)
00102             + (c7 + d12*z[i] ) * (xq-yq)
00103             + (c5*x[i] + c6*y[i] + b3 + d9*(2.0*zq-3.0*rr) ) * z[i]
00104             + (c8*y[i] + b1 + d13*y[i]*z[i] + d14*(xq-3.0*yq) ) * x[i]
00105             + (d10*x[i] + d11*y[i])*(4.0*zq-rr) ;
00106    }
00107 }

void warp3D_sharm3_grad int    npt,
float *    wt,
float *    x,
float *    y,
float *    z,
float *    gx,
float *    gy,
float *    gz
 

Definition at line 113 of file warp3D_sharm.c.

References gx, gy, and i.

00116 {
00117    int i ;
00118    float xq,yq,zq,rr ,  b1,b2,b3 , c4,c5,c6,c7,c8 , d9,d10,d11,d12,d13,d14,d15;
00119    float df0,df1,df2,df3 , t9,t21,t28,t29,t32,t34,t40,t41,t43 ;
00120 
00121    if( npt < 1 || wt == NULL || x  == NULL ||
00122                   y  == NULL || z  == NULL ||
00123                   gx == NULL || gy == NULL || gz == NULL ) return ;
00124 
00125                 b1 = wt[1] ; b2 = wt[2] ; b3 = wt[3] ;
00126    c4 = wt[4] ; c5 = wt[5] ; c6 = wt[6] ; c7 = wt[7] ; c8 = wt[8] ;
00127 
00128    d9  = wt[9]  ; d10 = wt[10] ; d11 = wt[11] ; d12 = wt[12] ;
00129    d13 = wt[13] ; d14 = wt[14] ; d15 = wt[15] ;
00130 
00131    for( i=0 ; i < npt ; i++ ){
00132      xq = x[i]*x[i];
00133      yq = y[i]*y[i];
00134      zq = z[i]*z[i];
00135      rr = xq+yq;
00136      t9 = d12*z[i];
00137      t21 = d13*y[i];
00138      t28 = d10*x[i];
00139      t29 = d11*y[i];
00140      t32 = 4.0*zq-rr;
00141      t34 = d9*z[i];
00142      df3 = 3.0*t34-t28-t29;
00143      df2 = 2.0*(c4+t34)+4.0*(t28+t29);
00144      t40 = d15*y[i];
00145      t41 = d14*x[i];
00146      t43 = df3;
00147      df1 = -t40-c4-c7-t9-3.0*t41+t43;
00148      df0 = 3.0*t40-c4+c7+t9+t41+t43;
00149      gx[i] = c5*z[i]+c8*y[i]+b1+t21*z[i]+d14*(xq-3.0*yq)+d10*t32+2.0*df0*x[i];
00150      gy[i] = b2+d15*(3.0*xq-yq)+c6*z[i]+(c8+d13*z[i])*x[i]+d11*t32+2.0*df1*y[i];
00151      gz[i] = d12*(xq-yq)+c5*x[i]+c6*y[i]+b3+d9*(2.0*zq-3.0*rr)+t21*x[i]+2.0*df2*z[i];
00152   }
00153 }
 

Powered by Plone

This site conforms to the following standards: