-
Notifications
You must be signed in to change notification settings - Fork 0
/
raytracer.h
118 lines (101 loc) · 1.36 KB
/
raytracer.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
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
#include <iostream>
#include <vector>
using namespace std;
class Camera;
class Position;
class Intensity;
class Material;
class Vertex;
class Triangle;
class Vertices;
class Sphere;
class PointLight;
class Plane;
class Material
{
public:
int mid;
Intensity *ambient;
Intensity *diffuse;
Intensity *specular;
float specExp;
Intensity *reflectance;
};
class Vertex
{
public:
int vid;
Position *coordinates;
};
class Vertices
{
public:
int a;
int b;
int c;
};
class Triangle
{
public:
int tid;
Vertices *vertice;
int mid;
Position *normalN;
Position *aVert;
Position *bVert;
Position *cVert;
};
class Sphere
{
public:
int sid;
int vid;
int mid;
float radious;
Position *center;
};
class PointLight
{
public:
int plid;
Position *pos;
Intensity *intens;
};
class Position
{
public:
float x;
float y;
float z;
friend Position operator* (const Position& v1, const Position& v2);
friend Position operator- (const Position& v1, const Position& v2);
void dot(Position* p1, Position* p2);
};
class Intensity
{
public:
float r;
float g;
float b;
};
class Plane
{
public:
float left;
float right;
float bottom;
float top;
};
class Camera
{
public:
int cid;
Position *position;
Position *gaze;
Position *up;
Plane *plane;
float distance;
int horRes;
int verRes;
string outputName;
};