-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy patheuler.h
64 lines (52 loc) · 2.07 KB
/
euler.h
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
#pragma once
#include "prim.h"
//
// Low-level operators
//
// Edge splitting operator (Loop Make Edge Vertex)
void Lmev(bdHalfEdge* he1, bdHalfEdge* he2, Id v, float x, float y, float z);
// Inverse (Loop Kill Edge Vertex)
void Lkev(bdHalfEdge* he1, bdHalfEdge* he2);
// Face splitting operator (Loop Make Face Vertex)
bdFace* Lmef(bdHalfEdge* he1, bdHalfEdge* he2, Id f);
// Inverse (Loop Kill Edge Face)
void Lkef(bdHalfEdge* he1, bdHalfEdge* he2);
// Loop splitting operator (Loop Kill Edge Make Ring)
bdLoop* Lkemr(bdHalfEdge* he1, bdHalfEdge* he2);
// Inverse (Loop Make Edge Kill Ring)
void Lmekr(bdHalfEdge* he1, bdHalfEdge* he2);
// Face merging by creating an inner loop (Loop Kill Face Make Ring Hole)
void Lkfmrh(bdFace* fac1, bdFace* fac2);
// Inverse (Loop Make Face Kill Ring Hole)
bdFace* Lmfkrh(bdLoop* l, Id f);
//
// High-level operators
//
// Initialization operator (Make Vertex Face Solid)
bdSolid* Mvfs(Id s, Id f, Id v, float x, float y, float z);
// Inverse (Loop Kill Vertex Face Solid)
void Kvfs(bdSolid* s);
// Edge splitting operator (Make Edge Vertex)
int Mev(Id s, Id f1, Id f2, Id v1, Id v2, Id v3, Id v4, float x, float y,
float z);
// Special case, add a dangling edge (Simple Make Edge Vertex)
int Smev(Id s, Id f1, Id v1, Id v4, float x, float y, float z);
// Inverse (Kill Edge Vertex)
int Kev(Id s, Id f, Id v1, Id v2);
// Face splitting operator (Make Edge Face)
int Mef(Id s, Id f1, Id f2, Id v1, Id v2, Id v3, Id v4);
// Special case, if v1 and v3 are known to appear just once in the face (Simple
// Make Edge Face)
int Smef(Id s, Id f1, Id v1, Id v3, Id f2);
// Inverse (Kill Edge Face)
int Kef(Id s, Id f, Id v1, Id v2);
// Loop splitting operator (Kill Edge Make Ring)
int Kemr(Id s, Id f, Id v1, Id v2);
// Inverse (Make Edge Kill Ring)
int Mekr(Id s, Id f, Id v1, Id v2, Id v3, Id v4);
// Special case (Simple Make Edge Kill Ring)
int Smekr(Id s, Id f, Id v1, Id v3);
// Face merging by creating an inner loop (Kill Face Make Ring Hole)
int Kfmrh(Id s, Id f1, Id f2);
// Inverse (Make Face Kill Ring Hole)
int Mfkrh(Id s, Id f1, Id v1, Id v2, Id f2);