From 5086631c287a954bae9c2bb4a987cb7f1eda3e57 Mon Sep 17 00:00:00 2001 From: Franz Zotter Date: Tue, 21 Aug 2012 08:10:42 +0000 Subject: convex hull algorithm added svn path=/trunk/externals/iem/iemmatrix/; revision=16165 --- src/mtx_qhull/vectors.h | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 src/mtx_qhull/vectors.h (limited to 'src/mtx_qhull/vectors.h') diff --git a/src/mtx_qhull/vectors.h b/src/mtx_qhull/vectors.h new file mode 100644 index 0000000..201205a --- /dev/null +++ b/src/mtx_qhull/vectors.h @@ -0,0 +1,40 @@ +typedef struct vec_ { + float c[3]; +} vector_t; + +typedef struct points_ { + vector_t *v; + size_t num_points; +} points_t; + +typedef struct plane_ { + vector_t normal; + vector_t point; +} plane_t; + +vector_t initVector (float x, float y, float z); +vector_t normalizeVector(vector_t v); + +plane_t initPlane (vector_t normal, vector_t point); + +points_t initPoints (const float *x, + const float *y, const float *z, + size_t num_points); +void freePoints (points_t *points); + +vector_t crossProduct (vector_t v1, vector_t v2); +float innerProduct (vector_t v1, vector_t v2); +float distancePointPlane (vector_t point, plane_t plane); +vector_t addVectors(vector_t v1, vector_t v2); +vector_t subtractVectors(vector_t v1, vector_t v2); +vector_t scaleVector(vector_t v1, float f); +vector_t averagePoints(points_t points); +vector_t normalOfPoints(points_t points); +plane_t planeFromPoints(points_t points); + +vector_t averageListedPoints(points_t points, list_t list); +vector_t normalOfListedPoints(points_t points, list_t list); +plane_t planeFromListedPoints(points_t points, list_t list); + +void printPlane(plane_t p); +void printVector(vector_t v); -- cgit v1.2.1