-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathtriangle.cpp
More file actions
65 lines (51 loc) · 1.34 KB
/
Copy pathtriangle.cpp
File metadata and controls
65 lines (51 loc) · 1.34 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
#include "triangle.h"
struct triangle;
bool operator==(triangle const &tri1, triangle const &tri2)
{
return (tri1.p == tri2.p) and (tri1.color == tri2.color) and (tri1.symbol == tri2.symbol);
}
triangle operator+(triangle const &tri, vec3d const &shift)
{
triangle result;
result.p[0] = tri.p[0] + shift;
result.p[1] = tri.p[1] + shift;
result.p[2] = tri.p[2] + shift;
result.symbol = tri.symbol;
result.color = tri.color;
return result;
}
triangle operator-(triangle const &tri, vec3d const &shift)
{
triangle result;
result.p[0] = tri.p[0] - shift;
result.p[1] = tri.p[1] - shift;
result.p[2] = tri.p[2] - shift;
result.symbol = tri.symbol;
result.color = tri.color;
return result;
}
void componentwiseMultiply(const vec3d &i, triangle &tri)
{
componentwiseMultiply(i, tri.p[0]);
componentwiseMultiply(i, tri.p[1]);
componentwiseMultiply(i, tri.p[2]);
}
vec3d midpointOfTriangle(const triangle tri)
{
return (tri.p[0] + tri.p[1] + tri.p[2]) / 3.0f;
}
vec3d normalVectorToTriangle(triangle const &tri) {
vec3d P = tri.p[1] - tri.p[0];
vec3d Q = tri.p[2] - tri.p[1];
return crossProduct(P, Q);
}
triangle operator*(mat4x4 const &m, triangle const &tri)
{
triangle result;
result.p[0] = m * tri.p[0];
result.p[1] = m * tri.p[1];
result.p[2] = m * tri.p[2];
result.symbol = tri.symbol;
result.color = tri.color;
return result;
}