diff options
Diffstat (limited to 'src/mtx_qhull/vectors.h')
-rw-r--r-- | src/mtx_qhull/vectors.h | 36 |
1 files changed, 27 insertions, 9 deletions
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 <sys/types.h> +#ifndef QHULL_VECTOR_H +#define QHULL_VECTOR_H #include "list.h" - +#include <math.h> +#include <stdlib.h> +#include <stdio.h> 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 */ |