From 04be907cbba161af7eda231f8a6a1856fc3a6042 Mon Sep 17 00:00:00 2001 From: Franz Zotter Date: Sat, 25 Aug 2012 22:51:30 +0000 Subject: improved deterministic behavior of [mtx_qhull], however planar polygons do not fully work yet. svn path=/trunk/externals/iem/iemmatrix/; revision=16172 --- src/mtx_qhull/vectors.h | 36 +++++++++++++++++++++++++++--------- 1 file changed, 27 insertions(+), 9 deletions(-) (limited to 'src/mtx_qhull/vectors.h') diff --git a/src/mtx_qhull/vectors.h b/src/mtx_qhull/vectors.h index fadb370..06a302a 100644 --- a/src/mtx_qhull/vectors.h +++ b/src/mtx_qhull/vectors.h @@ -1,9 +1,9 @@ -#ifndef QHULL_VECTORS_H -#define QHULL_VECTORS_H - -#include +#ifndef QHULL_VECTOR_H +#define QHULL_VECTOR_H #include "list.h" - +#include +#include +#include typedef struct vec_ { float c[3]; } vector_t; @@ -18,31 +18,49 @@ typedef struct plane_ { vector_t point; } plane_t; +typedef struct line_ { + vector_t direction; + vector_t point; +} line_t; + + vector_t initVector (float x, float y, float z); +float lengthVector(vector_t v); vector_t normalizeVector(vector_t v); plane_t initPlane (vector_t normal, vector_t point); +line_t initLine (vector_t direction, vector_t point); points_t initPoints (const float *x, const float *y, const float *z, size_t num_points); void freePoints (points_t *points); +size_t getNumPoints(const points_t points); +vector_t getPoint(const points_t points, const index_t index); vector_t crossProduct (vector_t v1, vector_t v2); float innerProduct (vector_t v1, vector_t v2); +float distancePointPoint(const vector_t a, const vector_t b); float distancePointPlane (vector_t point, plane_t plane); +float distancePointLine (vector_t point, line_t line); +float distancePointLineOnPlane (vector_t point, + line_t line, 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 averagePoints(points_t points); vector_t normalOfPoints(points_t points); -plane_t planeFromPoints(points_t points); +plane_t planeFromPoints(points_t points);*/ +plane_t planeFromThreePoints (vector_t a, vector_t b, vector_t c); +line_t lineFromTwoPoints (vector_t a, vector_t b); vector_t averageListedPoints(points_t points, list_t list); vector_t normalOfListedPoints(points_t points, list_t list); +vector_t directionOfListedPoints(points_t points, list_t list); plane_t planeFromListedPoints(points_t points, list_t list); +line_t lineFromListedPoints(points_t points, list_t list); void printPlane(plane_t p); +void printLine(line_t l); void printVector(vector_t v); - -#endif /* QHULL_VECTORS_H */ +#endif /* QHULL_VECTOR_H */ -- cgit v1.2.1