-
Notifications
You must be signed in to change notification settings - Fork 0
/
vec3.h
54 lines (42 loc) · 1.51 KB
/
vec3.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
#include<iostream>
#include<cmath>
#pragma once
class VEC3{
public:
VEC3(){}
VEC3(float x1, float y1, float z1){x = x1; y=y1; z=z1;}
float x,y,z;
VEC3 operator-(){return VEC3(-x, -y, -z);}
VEC3 operator+(){return *this;}
VEC3& operator+=(const VEC3& v2);
VEC3& operator-=(const VEC3& v2);
VEC3& operator*=(const VEC3& v2);
VEC3& operator/=(const VEC3& v2);
VEC3& operator+=(const float f2);
VEC3& operator-=(const float f2);
VEC3& operator*=(const float f2);
VEC3& operator/=(const float f2);
float operator[](int i){
if(i==0) return x;
if(i==1) return y;
if(i==2) return z;
}
void normalize();
float magnitude();
};
float dot(const VEC3& v1, const VEC3& v2);
VEC3 cross(const VEC3& v1, const VEC3& v2);
std::ostream& operator<<(std::ostream& ost, VEC3 v);
std::istream& operator>>(std::istream& ist, VEC3 v);
VEC3 operator+(const VEC3& v1, const VEC3& v2);
VEC3 operator-(const VEC3& v1, const VEC3& v2);
VEC3 operator*(const VEC3& v1, const VEC3& v2);
VEC3 operator/(const VEC3& v1, const VEC3& v2);
VEC3 operator+(const VEC3& v1, float f2);
VEC3 operator-(const VEC3& v1, float f2);
VEC3 operator*(const VEC3& v1, float f2);
VEC3 operator/(const VEC3& v1, float f2);
VEC3 operator+(float f2, const VEC3& v1);
VEC3 operator-(float f2, const VEC3& v1);
VEC3 operator*(float f2, const VEC3& v1);
VEC3 operator/(float f2, const VEC3& v1);