Changeset 10211 for branches/HeuristicLab.Analysis.AlgorithmBehavior/qhull-2012.1/src/HeuristicLab.qhull/HeuristicLab_qhull.c
- Timestamp:
- 12/09/13 22:42:34 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HeuristicLab.Analysis.AlgorithmBehavior/qhull-2012.1/src/HeuristicLab.qhull/HeuristicLab_qhull.c
r10208 r10211 31 31 #endif 32 32 __declspec(dllexport) double qhull_volume(int dim, int numpoints, double *data); 33 void print_summary (void); 33 __declspec(dllexport) int* qhull_convex_hull(int dim, int numpoints, double *data, int *retCode, int* nrOfFacets); 34 __declspec(dllexport) void qhull_free(int* data); 34 35 #ifdef __cplusplus 35 36 } … … 73 74 if (!exitcode) { 74 75 print_summary(); 76 qh_vertexneighbors(); 75 77 volume = qh totvol; 76 78 } else { 77 return -1.0;79 return -1.0; 78 80 } 79 81 qh_freeqhull(!qh_ALL); … … 85 87 } 86 88 89 90 int* qhull_convex_hull(int dim, int numpoints, double *data, int *retCode, int* nrOfFacets) { 91 boolT ismalloc= False; 92 char flags[250]; 93 FILE *outfile= stdout; 94 FILE *errfile= stdout; 95 facetT *facet; 96 int curlong, totlong; 97 int i,j, exitcode; 98 int* result = NULL; 99 100 #if qh_QHpointer 101 if (qh_qh){ 102 printf ("QH6233: Qhull link error. The global variable qh_qh was not initialized\n\ 103 to NULL by global.c. Please compile user_eg.c with -Dqh_QHpointer_dllimport\n\ 104 as well as -Dqh_QHpointer, or use libqhullstatic, or use a different tool chain.\n\n"); 105 *retCode = -1; 106 return NULL; 107 } 108 #endif 109 110 sprintf (flags, "qhull s Tv Qt FA"); 111 112 exitcode= qh_new_qhull (dim, numpoints, data, ismalloc, flags, outfile, errfile); 113 if (!exitcode) { 114 facetT *facet; 115 vertexT *vertex, **vertexp; 116 unsigned int n = qh num_facets; 117 *nrOfFacets = n; 118 119 print_summary(); 120 qh_vertexneighbors(); 121 122 result = (int *) malloc(n*dim*sizeof(int)); 123 124 i=0; 125 FORALLfacets { 126 j=0; 127 FOREACHvertex_ (facet->vertices) { 128 if (j >= dim) 129 fprintf (errfile,"extra vertex %d of facet %d = %d",j++,i,/*1+*/qh_pointid(vertex->point)); //TODO: handle in return value 130 else 131 result[i+n*j++] = qh_pointid(vertex->point); 132 } 133 if (j < dim) fprintf (errfile,"facet %d only has %d vertices",i,j); 134 i++; 135 } 136 } else { 137 *retCode = -1; 138 return NULL; 139 } 140 qh_freeqhull(!qh_ALL); 141 qh_memfreeshort (&curlong, &totlong); 142 if (curlong || totlong) 143 fprintf (errfile, "qhull internal warning (HeuristicLab_qhull, #1): did not free %d bytes of long memory (%d pieces)\n", totlong, curlong); 144 145 return result; 146 } 147 148 149 void qhull_free(int* data) { 150 free(data); 151 } 152 153
Note: See TracChangeset
for help on using the changeset viewer.