-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathVector3.h
More file actions
55 lines (43 loc) · 1.3 KB
/
Vector3.h
File metadata and controls
55 lines (43 loc) · 1.3 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
#pragma once
class Vector3 {
public:
float m_x, m_y, m_z;
Vector3() : m_x(0), m_y(0), m_z(0) {}
Vector3(float x, float y, float z) : m_x(x), m_y(y), m_z(z) {}
Vector3(const Vector3& copy) { m_x = copy.m_x; m_y = copy.m_y; m_z = copy.m_z; }
float getX(void) const { return m_x; }
float getY(void) const { return m_y; }
float getZ(void) const { return m_z; }
Vector3 crossProduct(const Vector3& v)
{
return Vector3(
m_y * v.m_z - m_z * v.m_y,
m_z * v.m_x - m_x * v.m_z,
m_x * v.m_y - m_y * v.m_x);
}
float dotProduct(const Vector3& v)
{
return m_x * v.m_x + m_y * v.m_y + m_z * v.m_z;
}
Vector3 normalize()
{
float length = sqrt(m_x * m_x + m_y * m_y + m_z * m_z);
return Vector3(m_x / length, m_y / length, m_z / length);
}
};
inline Vector3 operator + (const Vector3& v0, const Vector3& v1)
{
return Vector3(v0.m_x + v1.m_x, v0.m_y + v1.m_y, v0.m_z + v1.m_z);
}
inline Vector3 operator - (const Vector3& v0, const Vector3& v1)
{
return Vector3(v0.m_x - v1.m_x, v0.m_y - v1.m_y, v0.m_z - v1.m_z);
}
inline Vector3 operator * (const Vector3& v, float f)
{
return Vector3(v.m_x * f, v.m_y * f, v.m_z * f);
}
inline Vector3 operator * (Vector3& v, const Vector3& v2)
{
return Vector3(v.m_x * v2.m_x, v.m_y * v2.m_y, v.m_z * v2.m_z);
}