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  

SUMA_GeomComp.h

Go to the documentation of this file.
00001 #ifndef SUMA_GEOMCOMP_INCLUDED
00002 #define SUMA_GEOMCOMP_INCLUDED
00003 
00004 typedef struct {
00005    int ni;
00006    int layer;
00007    float off; 
00008 }  SUMA_OFFSET_LL_DATUM;
00009 
00010 typedef struct {
00011    int N_TriIndex;            /*!< Number of triangles considered */
00012    int *TriIndex;             /*!< vector (N_TriIndex x 1) of 1D indices of triangles considered */
00013    int **IntersectedVoxels;   /*!< sparse matrix (N_TriIndex x N_InteresectedVoxels[i]) containing
00014                               1D indices of voxels intersected by the triangle. For example,
00015                               triangle of index TriIndex[i] intesects N_InteresectedVoxels[i]
00016                               whose 1D indices are stored in IntersectedVoxels[i] */
00017                               
00018    int *N_IntersectedVoxels;  /*!< Number of voxels intersected by some triangle */
00019 } SUMA_VTI; /*!< Voxel Triangle Intersection Structure. Create with SUMA_CreateVTI, Destroy with SUMA_FreeVTI*/
00020 SUMA_VTI *SUMA_CreateVTI(int N_TriIndex, int *TriIndex);
00021 SUMA_VTI * SUMA_FreeVTI(SUMA_VTI *vti);
00022 SUMA_VTI *SUMA_GetVoxelsIntersectingTriangle( SUMA_SurfaceObject *SO, SUMA_VOLPAR *VolPar, float *NodeIJKlist,
00023                                                 SUMA_VTI *vti);
00024 
00025 
00026 
00027 int SUMA_isSelfIntersect(SUMA_SurfaceObject *SO, int FullCount);
00028 int SUMA_VoxelNeighbors (int ijk, int ni, int nj, int nk, SUMA_VOX_NEIGHB_TYPES ntype, int *nl);
00029 byte *SUMA_FillToVoxelMask(byte *ijkmask, int ijkseed, int ni, int nj, int nk, int *N_in, byte *usethisisin); 
00030 SUMA_Boolean SUMA_VoxelsInBox(int *voxelsijk, int *N_in, float *c1, float *c2);
00031 SUMA_SurfaceObject *SUMA_Patch2Surf(float *NodeList, int N_NodeList, int *PatchFaces, int N_PatchFaces, int PatchDim);
00032 SUMA_PATCH * SUMA_getPatch (  int *NodesSelected, int N_Nodes, 
00033                               int *Full_FaceSetList, int N_Full_FaceSetList, 
00034                               SUMA_MEMBER_FACE_SETS *Memb, int MinHits);
00035 SUMA_Boolean SUMA_freePatch (SUMA_PATCH *Patch);
00036 SUMA_Boolean *SUMA_MaskOfNodesInPatch(SUMA_SurfaceObject *SO, int *N_NodesUsedInPatch);
00037 SUMA_BRANCH * SUMA_FindBranch (int ** InterMat, int N_InterMat, float ** InterNodes, int ** NodeLoc_in_InterMat, int verbose,  int * WBsz);
00038 SUMA_SURF_PLANE_INTERSECT *SUMA_Surf_Plane_Intersect (SUMA_SurfaceObject *SO, float *PlaneEq);
00039 SUMA_ROI_DATUM *SUMA_Surf_Plane_Intersect_ROI (SUMA_SurfaceObject *SO, int Nfrom, int Nto, float *P);
00040 void SUMA_WeldBranches ( SUMA_BRANCH *branch, int *sz_Branch, int brIndx1, int brIndx2 , int brEnd1, int brEnd2 );
00041 float * SUMA_Plane_Equation (float * P1, float *P2, float *P3, float *thiseq);
00042 int SUMA_Find_Edge_Nhost (SUMA_EDGE_LIST *EL, int *IsInter, int N_IsInter, int *kedge, int Nhost);
00043 SUMA_Boolean SUMA_Mark_Tri (SUMA_EDGE_LIST *EL, int E1, int iBranch, int *TriBranch, int *IsInter, int *N_IsInter, int *VisitationOrder, int *ivisit);
00044 int * SUMA_Dijkstra (SUMA_SurfaceObject *SO, int Nx, int Ny, SUMA_Boolean *isNodeInMesh, int *N_isNodeInMesh, int Method_Number, float *Lfinal, int *N_Path);
00045 void SUMA_free_SPI (SUMA_SURF_PLANE_INTERSECT *SPI);
00046 SUMA_SURF_PLANE_INTERSECT * SUMA_Allocate_SPI (SUMA_SurfaceObject *SO);
00047 SUMA_TRI_BRANCH* SUMA_AssignTriBranch (SUMA_SurfaceObject *SO, SUMA_SURF_PLANE_INTERSECT *SPI, int Nx, int *BranchCount, SUMA_Boolean DoCopy);
00048 SUMA_Boolean SUMA_show_STB (SUMA_TRI_BRANCH *B, FILE *Out);
00049 void SUMA_free_STB (SUMA_TRI_BRANCH *Bv, int N_Bv); 
00050 SUMA_Boolean SUMA_Show_SPI (SUMA_SURF_PLANE_INTERSECT *SPI, FILE * Out, SUMA_SurfaceObject *SO);
00051 int *SUMA_NodePath_to_EdgePath (SUMA_EDGE_LIST *EL, int *Path, int N_Path, int *N_Edge);
00052 int *SUMA_NodePath_to_TriPath_Inters_OLD (SUMA_SurfaceObject *SO, SUMA_TRI_BRANCH *Bv, int *Path, int N_Path, int *N_Tri);
00053 int *SUMA_NodePath_to_TriPath_Inters ( SUMA_SurfaceObject *SO, SUMA_SURF_PLANE_INTERSECT *SPI, int *nPath, int N_nPath, int *N_tPath);
00054 int * SUMA_IntersectionStrip (SUMA_SurfaceObject *SO, SUMA_SURF_PLANE_INTERSECT *SPI,  int *nPath, int N_nPath, float *dinters, float dmax, int *N_tPath);
00055 SUMA_Boolean SUMA_FromIntEdgeToIntEdge (int Tri, int E1, int E2, SUMA_EDGE_LIST *EL, SUMA_SURF_PLANE_INTERSECT *SPI, int Ny, SUMA_Boolean *Visited, float *d, float dmax, int *tPath, int *N_tPath);
00056 SUMA_Boolean SUMA_isSameEdge (SUMA_EDGE_LIST *EL, int E1, int E2);
00057 SUMA_CONTOUR_EDGES *SUMA_GetContour (SUMA_SurfaceObject *SO, int *Nodes, int N_Node, int *N_ContEdges, int mode, SUMA_PATCH *UseThisPatch);
00058 SUMA_Boolean SUMA_ShowPatch (SUMA_PATCH *Patch, FILE *Out) ;
00059 SUMA_Boolean SUMA_getoffsets  (int n, SUMA_SurfaceObject *SO, float *Off, float lim);
00060 SUMA_Boolean SUMA_getoffsets2 (int n, SUMA_SurfaceObject *SO, float lim, SUMA_GET_OFFSET_STRUCT *OffS, int * CoverThisNode, int N_CoverThisNode);
00061 DList * SUMA_getoffsets_ll (int n, SUMA_SurfaceObject *SO, float lim, int *CoverThisNode, int N_CoverThisNode);
00062 SUMA_GET_OFFSET_STRUCT *SUMA_Initialize_getoffsets (int N_Node);
00063 SUMA_Boolean SUMA_AddNodeToLayer (int n, int LayInd, SUMA_GET_OFFSET_STRUCT *OffS);
00064 SUMA_GET_OFFSET_STRUCT * SUMA_Free_getoffsets (SUMA_GET_OFFSET_STRUCT *OffS);
00065 SUMA_Boolean SUMA_Recycle_getoffsets (SUMA_GET_OFFSET_STRUCT *OffS);
00066 float ** SUMA_CalcNeighbDist (SUMA_SurfaceObject *SO);
00067 float ** SUMA_Chung_Smooth_Weights (SUMA_SurfaceObject *SO);
00068 float * SUMA_Chung_Smooth (SUMA_SurfaceObject *SO, float **wgt, 
00069                            int N_iter, float FWHM, float *fin, 
00070                            int vpn, SUMA_INDEXING_ORDER d_order, float *fout_user,
00071                            SUMA_COMM_STRUCT *cs);
00072 SUMA_Boolean  SUMA_Taubin_Smooth_TransferFunc (float l, float m, int N, FILE *Out);
00073 SUMA_Boolean SUMA_Taubin_Smooth_Coef (float k, float *l, float *m);
00074 float * SUMA_Taubin_Smooth (SUMA_SurfaceObject *SO, float **wgt, 
00075                             float lambda, float mu, float *fin, 
00076                             int N_iter, int vpn, SUMA_INDEXING_ORDER d_order,
00077                             float *fout_user, SUMA_COMM_STRUCT *cs,
00078                             byte *nmask);
00079 SUMA_Boolean SUMA_ApplyAffine (float *NodeList, int N_Node, float M[][4], float *center);
00080 float *SUMA_NN_GeomSmooth( SUMA_SurfaceObject *SO, int Niter, float *fin_orig, 
00081                            int vpn, SUMA_INDEXING_ORDER d_order, float *fout_final_user,
00082                            SUMA_COMM_STRUCT *cs);
00083 SUMA_Boolean SUMA_EquateSurfaceSize(SUMA_SurfaceObject *SO, SUMA_SurfaceObject *SOref, float max_off, SUMA_COMM_STRUCT *cs);
00084 SUMA_Boolean SUMA_EquateSurfaceVolumes(SUMA_SurfaceObject *SO, SUMA_SurfaceObject *SOref, float perc_tol, SUMA_COMM_STRUCT *cs);
00085 SUMA_Boolean SUMA_EquateSurfaceAreas(SUMA_SurfaceObject *SO, SUMA_SurfaceObject *SOref, float perc_tol, SUMA_COMM_STRUCT *cs);
00086 double SUMA_Mesh_Volume(SUMA_SurfaceObject *SO, int *FSI, int N_FaceSet) ;
00087 double SUMA_Mesh_Area(SUMA_SurfaceObject *SO, int *FSI, int N_FaceSet) ;
00088 double SUMA_Pattie_Volume (SUMA_SurfaceObject *SO1, SUMA_SurfaceObject *SO2, int *Nodes, int N_Node, SUMA_SurfaceObject *UseThisSO, int minhits);
00089 double SUMA_NewAreaAtRadius(SUMA_SurfaceObject *SO, double r, double Rref, float *tmpList);
00090 SUMA_Boolean SUMA_ProjectSurfaceToSphere(SUMA_SurfaceObject *SO, SUMA_SurfaceObject *SOref, float radius, SUMA_COMM_STRUCT *cs);
00091 SUMA_OFFSET_STRUCT *SUMA_FormNeighbOffset ( SUMA_SurfaceObject *SO, float OffsetLim);
00092 SUMA_OFFSET_STRUCT * SUMA_free_NeighbOffset (SUMA_SurfaceObject *SO, SUMA_OFFSET_STRUCT *OffS_out);
00093 float *SUMA_Offset_GeomSmooth( SUMA_SurfaceObject *SO, int N_iter, float Offestlim, float *fin_orig, 
00094                               int vpn, SUMA_INDEXING_ORDER d_order, float *fout_final_user,
00095                               SUMA_COMM_STRUCT *cs);
00096 SUMA_Boolean SUMA_GetOffset2Offset (SUMA_GET_OFFSET_STRUCT *GOS, SUMA_OFFSET_STRUCT *OS);
00097 char * SUMA_ShowOffset_ll_Info (DList *list, int detail);
00098 char * SUMA_ShowOffset_Info (SUMA_GET_OFFSET_STRUCT *OffS, int detail);
00099 
00100 /* Begin function prototypes for VolData.c */
00101 THD_fvec3 SUMA_THD_3dfind_to_3dmm( SUMA_SurfaceObject *SO, THD_fvec3 iv );
00102 THD_fvec3 SUMA_THD_3dind_to_3dmm( SUMA_SurfaceObject *SO, THD_ivec3 iv );
00103 THD_fvec3 SUMA_THD_3dmm_to_3dfind( SUMA_SurfaceObject *SO , THD_fvec3 fv );
00104 THD_ivec3 SUMA_THD_3dmm_to_3dind( SUMA_SurfaceObject *SO  , THD_fvec3 fv );
00105 THD_fvec3 SUMA_THD_3dmm_to_dicomm( int xxorient, int yyorient, int zzorient , THD_fvec3 imv );
00106 THD_fvec3 SUMA_THD_dicomm_to_3dmm( SUMA_SurfaceObject *SO , THD_fvec3 dicv );
00107 void SUMA_orcode_to_orstring (int xxorient, int yyorient, int zzorient, char *orstr);
00108 void SUMA_sizeto3d_2_deltaHEAD(THD_ivec3 orient, THD_fvec3 *delta);            
00109 void SUMA_originto3d_2_originHEAD(THD_ivec3 orient, THD_fvec3 *origin);
00110 SUMA_Boolean SUMA_vec_3dfind_to_3dmm (float *NodeList, int N_Node, SUMA_VOLPAR *VolPar);
00111 SUMA_Boolean SUMA_vec_3dmm_to_3dfind (float *NodeList, int N_Node, SUMA_VOLPAR *VolPar);
00112 SUMA_Boolean SUMA_vec_dicomm_to_3dfind (float *NodeList, int N_Node, SUMA_VOLPAR *VolPar);
00113 SUMA_Boolean SUMA_vec_3dfind_to_dicomm (float *NodeList, int N_Node, SUMA_VOLPAR *VolPar);
00114 SUMA_Boolean SUMA_vec_3dmm_to_dicomm (float *NodeList, int N_Node, SUMA_VOLPAR *VolPar);
00115 SUMA_Boolean SUMA_vec_dicomm_to_3dmm (float *NodeList, int N_Node, SUMA_VOLPAR *VolPar);
00116 SUMA_Boolean SUMA_CoordChange (char *orc_in, char *orc_out, float *XYZ, int N_xyz);
00117 int SUMA_flip_orient(int xxorient);
00118 int SUMA_ok_orstring (char *orstr);
00119 SUMA_Boolean SUMA_orstring_to_orcode (char *orstr, int *orient);
00120 int SUMA_Subdivide_Mesh(float **NodeListp, int *N_Node, int **FaceSetListp, int *N_FaceSet, float maxarea);
00121 int SUMA_OrientTriangles (float *NodeList, int N_Node, int *FaceSetList, int N_FaceSet, int orient, int Force);
00122 
00123 /* End function prototypes for VolData.c */
00124 
00125 /* Begin function prototypes for SUMA_ConvexHull.c */
00126 int SUMA_qhull_wrap( int npt , float * xyz , int ** ijk , int fliporient);
00127 /* End function prototypes for SUMA_ConvexHull.c */
00128 
00129 
00130 #endif            
00131 
00132 
00133 
00134 
00135 
00136 
 

Powered by Plone

This site conforms to the following standards: