vpred.h
Go to the documentation of this file.
#ifndef _VPRED_H_
#define _VPRED_H_
#include <maloc/maloc_base.h>
/* random() prototype seems to be missing in <stdlib.h> */
/*
* if !defined(VOSF1)
* extern long int random(void);
* endif
*/
/* On some machines, the exact arithmetic routines might be defeated by the */
/* use of internal extended precision floating-point registers. Sometimes */
/* this problem can be fixed by defining certain values to be volatile, */
/* thus forcing them to be stored to memory and rounded off. This isn't */
/* a great solution, though, as it slows the arithmetic down. */
/* */
/* To try this out, write "#define INEXACT volatile" below. Normally, */
/* however, INEXACT should be defined to be nothing. ("#define INEXACT".) */
#define INEXACT /* Nothing */
/* #define INEXACT volatile */
#define REAL double
#define REALPRINT doubleprint
#define REALRAND doublerand
#define NARROWRAND narrowdoublerand
#define UNIFORMRAND uniformdoublerand
void Vpred_exactinit(void);
REAL Vpred_orient2d(REAL *pa, REAL *pb, REAL *pc);
REAL Vpred_orient2dfast(REAL *pa, REAL *pb, REAL *pc);
REAL Vpred_orient2dexact(REAL *pa, REAL *pb, REAL *pc);
REAL Vpred_orient3d(REAL *pa, REAL *pb, REAL *pc, REAL *pd);
REAL Vpred_orient3dfast(REAL *pa, REAL *pb, REAL *pc, REAL *pd);
REAL Vpred_orient3dexact(REAL *pa, REAL *pb, REAL *pc, REAL *pd);
REAL Vpred_incircle(REAL *pa, REAL *pb, REAL *pc, REAL *pd);
REAL Vpred_incirclefast(REAL *pa, REAL *pb, REAL *pc, REAL *pd);
REAL Vpred_incircleexact(REAL *pa, REAL *pb, REAL *pc, REAL *pd);
REAL Vpred_insphere(REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL *pe);
REAL Vpred_inspherefast(REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL *pe);
REAL Vpred_insphereexact(REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL *pe);
#endif /* _VPRED_H_ */
maloc_base.h
The base (or foundation) header for MALOC.
Vpred_orient2d
REAL Vpred_orient2d(REAL *pa, REAL *pb, REAL *pc)
Adaptive exact 2D orientation test. Robust.
Vpred_orient3dfast
REAL Vpred_orient3dfast(REAL *pa, REAL *pb, REAL *pc, REAL *pd)
Approximate 3D orientation test. Nonrobust.
REAL
#define REAL
float or double
Definition: vpred.h:56
Vpred_orient3dexact
REAL Vpred_orient3dexact(REAL *pa, REAL *pb, REAL *pc, REAL *pd)
Exact 3D orientation test. Robust.
Vpred_inspherefast
REAL Vpred_inspherefast(REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL *pe)
Approximate 3D insphere test. Nonrobust.
Vpred_orient3d
REAL Vpred_orient3d(REAL *pa, REAL *pb, REAL *pc, REAL *pd)
Adaptive exact 3D orientation test. Robust.
Vpred_insphereexact
REAL Vpred_insphereexact(REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL *pe)
Exact 3D insphere test. Robust.
Vpred_exactinit
void Vpred_exactinit(void)
Initialize the variables used for exact arithmetic.
Vpred_incircleexact
REAL Vpred_incircleexact(REAL *pa, REAL *pb, REAL *pc, REAL *pd)
Exact 2D incircle test. Robust.
Vpred_insphere
REAL Vpred_insphere(REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL *pe)
Adaptive exact 3D insphere test. Robust.
Vpred_orient2dfast
REAL Vpred_orient2dfast(REAL *pa, REAL *pb, REAL *pc)
Approximate 2D orientation test. Nonrobust.
Vpred_orient2dexact
REAL Vpred_orient2dexact(REAL *pa, REAL *pb, REAL *pc)
Exact 2D orientation test. Robust.
Vpred_incircle
REAL Vpred_incircle(REAL *pa, REAL *pb, REAL *pc, REAL *pd)
Adaptive exact 2D incircle test. Robust.
Vpred_incirclefast
REAL Vpred_incirclefast(REAL *pa, REAL *pb, REAL *pc, REAL *pd)
Approximate 2D incircle test. Nonrobust.