-
Notifications
You must be signed in to change notification settings - Fork 0
/
Vec2.cpp
126 lines (114 loc) · 1.65 KB
/
Vec2.cpp
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#include "Vec2.h"
Vec2::Vec2()
{
x=y=0;
}
Vec2::Vec2(float a, int b)
{
x=a;
y=b;
}
float Vec2::dotProduct(const Vec2& vec2)
{
return(x*vec2.x+y*vec2.y);
}
Vec2 Vec2::crossProduct(const Vec2& vec2)
{
return Vec2();
}
float Vec2::lenght()
{
return sqrt(x*x + y*y);
}
float Vec2::lengthSquared()
{
float len = lenght();
return len*len;
}
void Vec2::normalize()
{
float len = lenght();
if(len!=0)
{
x/=len;
y/=len;
}
}
void Vec2::inverse()
{
x=1/x;
y=1/y;
}
void Vec2::change(float a, float b)
{
x=a;
y=b;
}
void Vec2::change(Vec2 vec2)
{
x=vec2.x;
y=vec2.y;
}
void Vec2::changeX(float a)
{
x=a;
}
void Vec2::changeY(float b)
{
y=b;
}
Vec2 Vec2::operator+(const Vec2& vec2)
{
return Vec2(x+vec2.x,y+vec2.y);
}
Vec2 Vec2::operator-(const Vec2& vec2)
{
return Vec2(x-vec2.x,y-vec2.y);
}
Vec2 Vec2::operator*(float num)
{
return Vec2(x*num,y*num);
}
Vec2 Vec2::operator/(float num)
{
return Vec2(x/num,y/num);
}
Vec2& Vec2::operator+=(const Vec2& vec2)
{
x+=vec2.x;
y+=vec2.y;
return *this;
}
Vec2& Vec2::operator-=(const Vec2& vec2)
{
x-=vec2.x;
y-=vec2.y;
return *this;
}
Vec2& Vec2::operator*=(float num)
{
x*=num;
y*=num;
return *this;
}
Vec2& Vec2::operator/=(float num)
{
if(num==0)
return *this;
x/=num;
y/=num;
return *this;
}
bool Vec2::operator==(const Vec2 vec2)
{
return (x==vec2.x && y==vec2.y);
}
bool Vec2::operator!=(const Vec2 vec2)
{
return !(*this==vec2);
}
std::ostream& operator<<(std::ostream& out, const Vec2 vec)
{
out << vec.x << " "<< vec.y << std::endl;
return out;
}