aboutsummaryrefslogtreecommitdiff
path: root/src/mtx_qhull/zhull.h
blob: fc0ff141865b9b3514ee10caa2eab2180c3cff39 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#ifndef QHULL_ZHULL_H
#define QHULL_ZHULL_H

#include "vectors.h"
#include "list.h"
#include <math.h>
#include <stdlib.h>
#include <stdio.h>
#define TOL_OUTSIDEPOINT 1e-7
#define TOL_INSIDEPOINT  -1e-7
#define TOL_DEGENERATE  1e-6
#define MAXIT 1000000


typedef struct facet_ {
    plane_t plane;
    list_t corners;
    list_t outsideset;
    list_t insideset;
    size_t farthest_outside_point;
    list_t neighbors;
    float maxdistance;
} facet_t;

typedef struct zhull_ {
    points_t pts;
    list_t facets;
    list_t facets_with_outsidepoints;
    list_t facets_with_insidepoints;
} zhull_t;

void calculateZHull(zhull_t *zh,int maxit);
index_t getTriangleCorner(const zhull_t * const zh,
        const index_t triangle_idx,
        const index_t corner_idx);
void printZhull(const zhull_t * const  zh);
void freeZhull(zhull_t *zh);
zhull_t zhullInitPoints(const float *x, const float *y, 
        const float *z, const size_t num_points);
void printFacet(const zhull_t * const zh, 
      const facet_t * const f);
#endif /* QHULL_ZHULL_H */