-
Notifications
You must be signed in to change notification settings - Fork 0
/
Vector3.h
84 lines (68 loc) · 1.82 KB
/
Vector3.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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
/**
* Rainbow Six: Siege SDK
* Copyright (C) 2017 RangeMachine
*/
#pragma once
#include <cmath>
namespace Engine
{
class Vector3
{
public:
float x;
float y;
float z;
Vector3();
Vector3(float x, float y, float z);
Vector3 operator+(const Vector3& vector) const;
Vector3 operator-(const Vector3& vector) const;
Vector3 operator-() const;
Vector3 operator*(float number) const;
Vector3 operator/(float number) const;
Vector3& operator+=(const Vector3& vector);
Vector3& operator-=(const Vector3& vector);
Vector3& operator*=(float number);
Vector3& operator/=(float number);
bool operator==(const Vector3& vector) const;
bool operator!=(const Vector3& vector) const;
inline float Dot(const Vector3& vector)
{
return x * vector.x + y * vector.y + z * vector.z;
}
inline float Distance(const Vector3& vector)
{
return sqrt(
(x - vector.x) * (x - vector.x) +
(y - vector.y) * (y - vector.y) +
(z - vector.z) * (z - vector.z));
}
};
inline bool Vector3::operator==(const Vector3& vector) const
{
return x == vector.x && y == vector.y && z == vector.z;
}
inline bool Vector3::operator!=(const Vector3& vector) const
{
return x != vector.x || y != vector.y || z != vector.z;
}
inline Vector3 Vector3::operator+(const Vector3& vector) const
{
return Vector3(x + vector.x, y + vector.y, z + vector.z);
}
inline Vector3 Vector3::operator-(const Vector3& vector) const
{
return Vector3(x - vector.x, y - vector.y, z - vector.z);
}
inline Vector3 Vector3::operator-() const
{
return Vector3(-x, -y, -z);
}
inline Vector3 Vector3::operator*(float number) const
{
return Vector3(x * number, y * number, z * number);
}
inline Vector3 Vector3::operator/(float number) const
{
return Vector3(x / number, y / number, z / number);
}
}