forked from devinnicholson/Raycaster
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdata.py
57 lines (50 loc) · 2.81 KB
/
data.py
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
import utility
class Point():
def __init__ (self, x, y, z):
self.x = x
self.y = y
self.z = z
def __eq__ (self,other):
return utility.epsilon_equal(self.x,other.x) and utility.epsilon_equal(self.y,other.y) and utility.epsilon_equal(self.z,other.z)
class Vector():
def __init__ (self,x,y,z):
self.x = x
self.y = y
self.z = z
def __eq__ (self,other):
return utility.epsilon_equal(self.x,other.x) and utility.epsilon_equal(self.y,other.y) and utility.epsilon_equal(self.z,other.z)
class Ray():
def __init__ (self,pt,dir):
self.pt = pt
self.dir = dir
def __eq__ (self,other):
return utility.epsilon_equal(self.pt.x,other.pt.x) and utility.epsilon_equal(self.pt.y,other.pt.y) and utility.epsilon_equal(self.pt.z,other.pt.z) and utility.epsilon_equal(self.dir.x,other.dir.x) and utility.epsilon_equal(self.dir.y,other.dir.y) and utility.epsilon_equal(self.dir.z,other.dir.z)
class Sphere():
def __init__ (self,center,radius,color,finish):
self.center = center
self.radius = radius
self.color = color
self.finish = finish
def __eq__ (self,other):
return utility.epsilon_equal(self.center.x,other.center.x) and utility.epsilon_equal(self.center.y,other.center.y) and utility.epsilon_equal(self.center.z,other.center.z) and utility.epsilon_equal(self.radius,other.radius) and utility.epsilon_equal(self.color.r,other.color.r) and utility.epsilon_equal(self.color.g,other.color.g) and utility.epsilon_equal(self.color.b,other.color.b) and utility.epsilon_equal(self.finish.ambient,other.finish.ambient)
class Color():
def __init__ (self,r,g,b):
self.r = r
self.g = g
self.b = b
def __eq__ (self,other):
return utility.epsilon_equal(self.r,other.r) and utility.epsilon_equal(self.g,other.g) and utility.epsilon_equal(self.b,other.b)
class Finish():
def __init__ (self,ambient,diffuse,specular,roughness):
self.ambient = ambient
self.diffuse = diffuse
self.specular = specular
self.roughness = roughness
def __eq__ (self,other):
return utility.epsilon_equal(self.ambient,other.ambient) and utility.epsilon_equal(self.diffuse,other.diffuse) and utility.epsilon_equal(self.specular,other.specular) and utility.epsilon_equal(self.roughness,other.roughness)
class Light():
def __init__ (self,point,color):
self.point = point
self.color = color
def __eq__ (self,other):
return utility.epsilon_equal(self.point.x,other.point.x) and utility.epsilon_equal(self.point.y,other.point.y) and utility.epsilon_equal(self.point.z,other.point.z) and utility.epsilon_equal(self.color.r,other.color.r) and utility.epsilon_equal(self.color.g,other.color.g) and utility.epsilon_equal(self.color.b,other.color.b)