-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtrig-list.h
More file actions
69 lines (59 loc) · 2.68 KB
/
Copy pathtrig-list.h
File metadata and controls
69 lines (59 loc) · 2.68 KB
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
/*
* trig-list.h
* Map2Globe: Image to globe converter.
*
* Copyright (c) 2020-2024 Bryan Franklin. All rights reserved.
*/
#ifndef TRIG_LIST_H
#define TRIG_LIST_H
extern const double epsilon;
typedef struct trig {
double x[3], y[3], z[3]; /* vertex coordinates */
double nx[3], ny[3], nz[3]; /* vertex normals */
int trigId; /* position of trig in list */
int groupId;
int neighbor[3]; /* position in list of neighboring triangles */
} trig_t;
void trig_init(trig_t *trig);
void trig_fill(trig_t *trig,
double x1, double y1, double z1,
double x2, double y2, double z2,
double x3, double y3, double z3);
void trig_unitize_normals(trig_t *trig);
void trig_set_normals(trig_t *trig,
double nx1, double ny1, double nz1,
double nx2, double ny2, double nz2,
double nx3, double ny3, double nz3);
void trig_get_normal(trig_t *trig);
void trig_set_group(trig_t *trig, int id);
void trig_move(trig_t *trig, double dx, double dy, double dz);
void trig_scale(trig_t *trig, double sx, double sy, double sz);
void trig_rotate_axial(trig_t *trig, int axis, double rad);
void trig_rotate_axial_around(trig_t *trig, int axis, double rad, double cx, double cy, double cz);
void trig_export_stl(FILE *fp, trig_t *trig);
typedef struct trig_list {
int num; /* number of triangles in list */
int cap; /* allocated capacity of list */
trig_t *trig; /* list buffer */
} trig_list_t;
int trig_list_init(trig_list_t *list);
void trig_list_free(trig_list_t *list);
void trig_list_clear(trig_list_t *list);
void trig_list_resize(trig_list_t *list);
int trig_list_add(trig_list_t *list,
double x1, double y1, double z1,
double x2, double y2, double z2,
double x3, double y3, double z3);
int trig_list_remove(trig_list_t *list, int index);
int trig_list_append(trig_list_t *list, trig_t *t);
void trig_list_concatenate(trig_list_t *dst, trig_list_t *src);
void trig_list_move(trig_list_t *list, double dx, double dy, double dz);
void trig_list_scale(trig_list_t *list, double sx, double sy, double sz);
void trig_list_rotate_axial(trig_list_t *list, int axis, double rad);
void trig_list_rotate_axial_around(trig_list_t *list, int axis, double rad, double cx, double cy, double cz);
void trig_list_export_stl(FILE *fp, trig_list_t *list, char *name);
void trig_list_set_groupid(trig_list_t *list, int id);
void trig_list_replace_groupid(trig_list_t *list, int id, int target_id);
void trig_update_neighbors(trig_t *trig, trig_list_t *list);
void trig_list_update_neighbors(trig_list_t *list);
#endif /* TRIG_LIST_H */