Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F88583765
qhull_interface.cpp
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Sat, Oct 19, 14:24
Size
3 KB
Mime Type
text/x-c
Expires
Mon, Oct 21, 14:24 (1 d, 23 h)
Engine
blob
Format
Raw Data
Handle
21791178
Attached To
rCADDMESH CADD_mesher
qhull_interface.cpp
View Options
/*<html><pre> -<a href="qh-user.htm"
>-------------------------------</a><a name="TOP">-</a>
*/
#include <iostream.h>
#include <conio.h>
//--- Include qhull, so it works from with in a C++ source file
//---
//--- In MVC one cannot just do:
//---
//--- extern "C"
//--- {
//--- #include "qhull_a.h"
//--- }
//---
//--- Because qhull_a.h includes math.h, which can not appear
//--- inside a extern "C" declaration.
//---
//--- Maybe that why Numerical recipes in C avoid this problem, by removing
//--- standard include headers from its header files and add them in the
//--- respective source files instead.
//---
//--- [K. Erleben]
#if defined(__cplusplus)
extern
"C"
{
#endif
#include <stdio.h>
#include <stdlib.h>
#include <qhull/qhulllib.h>
#include <qhull/mem.h>
#include <qhull/qset.h>
#include <qhull/geom.h>
#include <qhull/merge.h>
#include <qhull/poly.h>
#include <qhull/io.h>
#include <qhull/stat.h>
#if defined(__cplusplus)
}
#endif
/*********************************************************************/
/* */
/* */
/* */
/* */
/*********************************************************************/
void
compute_convex_hull
(
void
)
{
int
dim
;
/* dimension of points */
int
numpoints
;
/* number of points */
coordT
*
points
;
/* array of coordinates for each point */
boolT
ismalloc
;
/* True if qhull should free points in qh_freeqhull() or reallocation */
char
flags
[]
=
"qhull Tv"
;
/* option flags for qhull, see qh_opt.htm */
FILE
*
outfile
=
stdout
;
/* output from qh_produce_output()
use NULL to skip qh_produce_output() */
FILE
*
errfile
=
stderr
;
/* error messages from qhull code */
int
exitcode
;
/* 0 if no error from qhull */
facetT
*
facet
;
/* set by FORALLfacets */
int
curlong
,
totlong
;
/* memory remaining after qh_memfreeshort */
/* initialize dim, numpoints, points[], ismalloc here */
exitcode
=
qh_new_qhull
(
dim
,
numpoints
,
points
,
ismalloc
,
flags
,
outfile
,
errfile
);
if
(
!
exitcode
)
{
/* if no error */
/* 'qh facet_list' contains the convex hull */
FORALLfacets
{
/* ... your code ... */
}
}
qh_freeqhull
(
!
qh_ALL
);
qh_memfreeshort
(
&
curlong
,
&
totlong
);
if
(
curlong
||
totlong
)
fprintf
(
errfile
,
"qhull internal warning (main): did not free %d bytes of long memory(%d pieces)
\n
"
,
totlong
,
curlong
);
};
/*********************************************************************/
/* */
/* */
/* */
/* */
/*********************************************************************/
void
main
()
{
cout
<<
"Hello world"
<<
endl
;
cout
<<
"Press any key..."
<<
endl
;
while
(
!
_kbhit
());
};
Event Timeline
Log In to Comment