aboutsummaryrefslogtreecommitdiff
path: root/src/mtx_qhull/vectors.h
diff options
context:
space:
mode:
authorFranz Zotter <fzotter@users.sourceforge.net>2012-08-21 08:10:42 +0000
committerFranz Zotter <fzotter@users.sourceforge.net>2012-08-21 08:10:42 +0000
commit5086631c287a954bae9c2bb4a987cb7f1eda3e57 (patch)
tree344393f7d6b8cbed979444c48f23003a232eb9c4 /src/mtx_qhull/vectors.h
parent585ca79e105c6e8ca57a2320c2335623a184ae06 (diff)
convex hull algorithm added
svn path=/trunk/externals/iem/iemmatrix/; revision=16165
Diffstat (limited to 'src/mtx_qhull/vectors.h')
-rw-r--r--src/mtx_qhull/vectors.h40
1 files changed, 40 insertions, 0 deletions
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);