Doxygen Source Code Documentation
kpart.c File Reference
#include "coxplot.h"
Go to the source code of this file.
Data Structures | |
struct | kpart |
Defines | |
#define | INCKP 16 |
#define | NEWKP(kp) |
#define | ATLEAST(kp, n) |
#define | LONG_TYPE 1 |
#define | TRAN_TYPE 2 |
#define | ILLEGAL_TYPE -666 |
#define | DEL 0.001 |
#define | FEQ(a, b) (fabs((a)-(b)) < DEL) |
Functions | |
void | collapse_illegals (kpart *kp) |
void | collapse_xy (kpart *kp) |
void | move (kpart *kp, float dx, float dy) |
void | flip (kpart *kp) |
void | flip90 (kpart *kp) |
void | flip180 (kpart *kp) |
void | crush (kpart *kp) |
Define Documentation
|
Value: do{ if( (kp)->nall < (n) ){ \ int nn = (n)+INCKP ; \ (kp)->typ = realloc( (kp)->typ , sizeof(int) *nn ) ; \ (kp)->x = realloc( (kp)->x , sizeof(float)*nn ) ; \ (kp)->y = realloc( (kp)->y , sizeof(float)*nn ) ; \ (kp)->nall= (nn) ; \ } } while(0) |
|
|
|
Definition at line 47 of file kpart.c. Referenced by collapse_xy(). |
|
Definition at line 44 of file kpart.c. Referenced by collapse_xy(), and crush(). |
|
|
|
|
|
Value: |
|
Definition at line 43 of file kpart.c. Referenced by crush(), flip(), flip180(), flip90(), and move(). |
Function Documentation
|
Definition at line 61 of file kpart.c. References kpart::npart, kpart::typ, kpart::x, and kpart::y. Referenced by collapse_xy().
00062 { 00063 int ii , jj , jtop ; 00064 00065 if( kp == NULL ) return ; 00066 00067 /* find uppermost legal entry */ 00068 00069 for( jj=kp->npart-1 ; jj >= 0 ; jj-- ) 00070 if( kp->typ[jj] >= 0 ) break ; 00071 00072 if( jj < 0 ){ kp->npart = 0; return; } 00073 if( jj == 0 ){ kp->npart = 1; return; } 00074 00075 jtop = jj ; 00076 00077 /* for each entry below this, see if it is legal */ 00078 00079 for( jj=0 ; jj < jtop ; ){ 00080 00081 if( kp->typ[jj] < 0 ){ /* illegal entry at jj */ 00082 for( ii=jj+1 ; ii <= jtop ; ii++ ){ /* => move all those */ 00083 kp->typ[ii-1] = kp->typ[ii] ; /* above jj down by 1 */ 00084 kp->x[ii-1] = kp->x[ii] ; 00085 kp->y[ii-1] = kp->y[ii] ; 00086 } 00087 jtop-- ; /* top index is reduced */ 00088 } else { 00089 jj++ ; /* go to next entry jj */ 00090 } 00091 } 00092 00093 return ; 00094 } |
|
Definition at line 98 of file kpart.c. References collapse_illegals(), FEQ, ILLEGAL_TYPE, kpart::npart, kpart::typ, kpart::x, and kpart::y. Referenced by crush(), flip(), flip180(), and flip90().
00099 { 00100 int ii , jj ; 00101 00102 if( kp == NULL || kp->npart < 2 ) return ; 00103 00104 /* find all partitions that are at the same place */ 00105 00106 for( jj=1 ; jj < kp->npart ; jj++ ){ 00107 if( kp->typ[jj] < 0 ) continue ; /* skip illegals */ 00108 00109 for( ii=0 ; ii < jj ; ii++ ){ /* check all entries below jj */ 00110 00111 if( kp->typ[ii] >= 0 && /* if legal */ 00112 FEQ(kp->x[ii],kp->x[jj]) && /* and at same place */ 00113 FEQ(kp->y[ii],kp->y[jj]) ){ 00114 00115 kp->typ[jj] = ILLEGAL_TYPE ; /* mark for demolition */ 00116 break ; 00117 } 00118 } 00119 } 00120 00121 collapse_illegals( kp ) ; /* demolition */ 00122 return ; 00123 } |
|
Definition at line 256 of file kpart.c. References collapse_xy(), ILLEGAL_TYPE, kpart::npart, TRAN_TYPE, and kpart::typ.
00257 { 00258 int ii , itop ; 00259 00260 if( kp == NULL || kp->npart == 0 ) return ; 00261 00262 itop = kp->npart ; 00263 for( ii=0 ; ii < itop ; kp++ ){ 00264 if( kp->typ[ii] == TRAN_TYPE ){ /* transverse is killed */ 00265 kp->typ[ii] = ILLEGAL_TYPE ; 00266 } 00267 } 00268 00269 collapse_xy(kp) ; 00270 return ; 00271 } |
|
Definition at line 144 of file kpart.c. References ATLEAST, collapse_xy(), LONG_TYPE, kpart::npart, TRAN_TYPE, kpart::typ, kpart::x, and kpart::y. Referenced by AFNI_drive_set_pbar_all(), ISQ_snapsave(), qh_gausselim(), qh_makenew_simplicial(), qh_makeridges(), SUMA_dPoint_At_Distance(), SUMA_OrientTriangles(), SUMA_Point_At_Distance(), THD_load_1D(), and THD_open_1D().
00145 { 00146 int ii , itop , jj ; 00147 00148 if( kp == NULL || kp->npart == 0 ) return ; 00149 00150 itop = kp->npart ; 00151 for( ii=0 ; ii < itop ; kp++ ){ 00152 00153 jj = kp->npart ; 00154 00155 switch( kp->typ[ii] ){ 00156 00157 case TRAN_TYPE:{ /* transverse magnetization */ 00158 ATLEAST(kp,jj+4) ; /* component breaks into 4 */ 00159 /* pieces: 1 at same place, */ 00160 kp->typ[jj] = TRAN_TYPE ; /* 1 new transverse */ 00161 kp->x[jj] = - kp->x[ii] ; /* and 2 new longitudinal */ 00162 kp->y[jj] = - kp->y[ii] ; 00163 00164 kp->typ[jj+1] = LONG_TYPE ; 00165 kp->x[jj+1] = kp->x[ii] ; 00166 kp->y[jj+1] = kp->y[ii] ; 00167 00168 kp->typ[jj+2] = LONG_TYPE ; 00169 kp->x[jj+2] = - kp->x[ii] ; 00170 kp->y[jj+2] = - kp->y[ii] ; 00171 } 00172 break ; 00173 00174 case LONG_TYPE:{ /* longitudinal magnetization */ 00175 ATLEAST(kp,jj+1) ; /* breaks into 2 pieces: */ 00176 /* 1 at same place */ 00177 kp->typ[jj] = LONG_TYPE ; /* 1 new transverse */ 00178 kp->x[jj] = kp->x[ii] ; 00179 kp->y[jj] = kp->y[ii] ; 00180 } 00181 break ; 00182 00183 } 00184 } 00185 00186 collapse_xy(kp) ; 00187 return ; 00188 } |
|
Definition at line 236 of file kpart.c. References collapse_xy(), kpart::npart, TRAN_TYPE, kpart::typ, kpart::x, and kpart::y.
00237 { 00238 int ii , itop ; 00239 00240 if( kp == NULL || kp->npart == 0 ) return ; 00241 00242 itop = kp->npart ; 00243 for( ii=0 ; ii < itop ; kp++ ){ 00244 if( kp->typ[ii] == TRAN_TYPE ){ /* transverse flips over */ 00245 kp->x[ii] = - kp->x[ii] ; 00246 kp->y[ii] = - kp->y[ii] ; 00247 } 00248 } 00249 00250 collapse_xy(kp) ; 00251 return ; 00252 } |
|
Definition at line 192 of file kpart.c. References ATLEAST, collapse_xy(), LONG_TYPE, kpart::npart, TRAN_TYPE, kpart::typ, kpart::x, and kpart::y.
00193 { 00194 int ii , itop , jj ; 00195 00196 if( kp == NULL || kp->npart == 0 ) return ; 00197 00198 itop = kp->npart ; 00199 for( ii=0 ; ii < itop ; kp++ ){ 00200 00201 jj = kp->npart ; 00202 00203 switch( kp->typ[ii] ){ 00204 00205 case TRAN_TYPE:{ /* rules for transverse are */ 00206 ATLEAST(kp,jj+4) ; /* same as previous case */ 00207 00208 kp->typ[jj] = LONG_TYPE ; 00209 kp->x[jj] = - kp->x[ii] ; 00210 kp->y[jj] = - kp->y[ii] ; 00211 00212 kp->typ[jj+1] = TRAN_TYPE ; 00213 kp->x[jj+1] = kp->x[ii] ; 00214 kp->y[jj+1] = kp->y[ii] ; 00215 00216 kp->typ[jj+2] = TRAN_TYPE ; 00217 kp->x[jj+2] = - kp->x[ii] ; 00218 kp->y[jj+2] = - kp->y[ii] ; 00219 } 00220 break ; 00221 00222 case LONG_TYPE:{ /* longitudinal is just */ 00223 kp->typ[ii] = LONG_TYPE ; /* converted to pure transverse */ 00224 } 00225 break ; 00226 00227 } 00228 } 00229 00230 collapse_xy(kp) ; 00231 return ; 00232 } |
|
Definition at line 127 of file kpart.c. References kpart::npart, TRAN_TYPE, kpart::typ, kpart::x, and kpart::y. Referenced by create_image_data(), put_background_in_screen(), and put_image_in_screen().
|