00001 #ifndef SUMA_SPHERICALMAPPING_INCLUDED
00002 #define SUMA_SPHERICALMAPPING_INCLUDED
00003
00004 typedef struct {
00005 char format[100];
00006 char type[100];
00007 char fileToRead[SUMA_MAX_NAME_LENGTH];
00008 char mapRef[SUMA_MAX_NAME_LENGTH];
00009 char state[100];
00010 char dim[100];
00011 } SUMA_SpecSurfInfo;
00012
00013 typedef struct {
00014 int* IDcode;
00015 int N_Node;
00016 int N_FaceSet;
00017 float *Weight;
00018 int *ClsNodes;
00019 int *FaceSetList;
00020 } SUMA_MorphInfo;
00021
00022 typedef struct {
00023 int N_elem;
00024 int* nd_list;
00025 int* vxl_list;
00026 int* ijk_list;
00027 int* nvox_list;
00028 float* valArray;
00029 } SUMA_1dData;
00030
00031
00032
00033
00034
00035 SUMA_MorphInfo * SUMA_Create_MorphInfo (void);
00036 SUMA_Boolean SUMA_Free_MorphInfo (SUMA_MorphInfo *MI);
00037 SUMA_1dData *SUMA_Create_1dData (void);
00038 SUMA_Boolean SUMA_Free_1dData (SUMA_1dData *data);
00039
00040 SUMA_SurfaceObject * SUMA_morphToStd (SUMA_SurfaceObject *SO, SUMA_MorphInfo *MI, SUMA_Boolean nodeChk);
00041 float *SUMA_readColor (int numNodes, char* colFileNm);
00042 void SUMA_writeColorFile (float *array, int numNode, int *index, char fileNm[]);
00043 void SUMA_writeFSfile (SUMA_SurfaceObject *SO, char firstLine[], char fileNm[]);
00044 void SUMA_writeSpecFile (SUMA_SpecSurfInfo *surfaces, int numSurf, char program[], char group[], char specFileNm[]);
00045 void SUMA_read1D (char* fileNm, int* i_colm, int* i_locInfo, SUMA_1dData* data);
00046 void SUMA_write1D ( int *num, float *vals, int *index, char firstline[], char outFileNm[]);
00047 float * SUMA_createColGradient( float *col, int numSeg, SUMA_Boolean allGvn );
00048 float * SUMA_assignColors( float *vals, float *cols, int numVal, int numCol, float *colRng, float *valDiv );
00049
00050 SUMA_Boolean SUMA_binSearch( float *nodeList, float target, int *seg);
00051 float intersection_map(float a, float b, float c, float d, float val);
00052 float * SUMA_detWeight (float node0[], float node1[], float node2[], float ptHit[]);
00053 SUMA_Boolean SUMA_inNodeNeighb( SUMA_SurfaceObject *surf, float *nodeList, int *node, float *P0, float *P1);
00054 SUMA_SurfaceObject * SUMA_CreateIcosahedron (float r, int recDepth, float ctr[3], char rec[], int ToSphere);
00055 SUMA_MorphInfo * SUMA_MapSurface (SUMA_SurfaceObject *surf1, SUMA_SurfaceObject *surf2);
00056 void SUMA_Search_Min_Dist( float* pt, float* nodeList, int* seg, float restr, float *dist, int *i_dist );
00057 void SUMA_binTesselate(float *nodeList, int *triList, int *nCtr, int *tCtr, int recDepth, int depth, int n1, int n2, int n3);
00058 void SUMA_tesselate( float *nodeList, int *triList, int *nCtr, int *tCtr, int N_Div, int n0, int n1, int n2);
00059 int * SUMA_divEdge( float *nodeList, int *nCtr, int node1, int node2, int N_Div);
00060 void SUMA_triangulateRow( float *nodeList, int *triList, int *nCtr, int *tCtr, int N_Div, int *currFloor, int node1, int node2);
00061 void SUMA_addNode(float *nodeList, int *ctr, float x, float y, float z);
00062 void SUMA_addTri(int *triList, int *ctr, int n1, int n2, int n3);
00063
00064 SUMA_SO_map *SUMA_Create_SO_map (void);
00065 SUMA_Boolean SUMA_Free_SO_map (SUMA_SO_map *SOM);
00066 SUMA_Boolean SUMA_Show_SO_map (SUMA_SO_map *SOM, FILE *out);
00067 SUMA_Boolean SUMA_SphereQuality(SUMA_SurfaceObject *SO, char *Froot, char *shist);
00068
00069 #define SUMA_ICOSAHEDRON_DIMENSIONS(r, a, b, lgth){ \
00070 a = r*(1+sqrt(5)) / (sqrt(10+2*sqrt(5))); \
00071 b = 2*r / (sqrt(10+2*sqrt(5))); \
00072 lgth = sqrt( pow(0-b,2) + pow(b-a,2) + pow(-a-0,2) ); \
00073 }
00074
00075 #endif