-
Notifications
You must be signed in to change notification settings - Fork 0
/
data.py
80 lines (66 loc) · 2.33 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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
import utility
# defines point object with attributes x, y, and z
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))
# defines vector object with attributes x, y, and 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))
# defines ray object with attributes pt (point object)
# and dir (vector object)
class Ray:
def __init__(self,pt,dir):
self.pt = pt
self.dir = dir
def __eq__(self,other):
return (self.pt == other.pt and
self.dir == other.dir)
# defines sphere object with attributes center (point object) and radius
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 (self.center == other.center and
utility.epsilon_equal(self.radius, other.radius))
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,pt,color):
self.pt = pt
self.color = color
def __eq__(self,other):
return (self.pt ==other.pt and self.color == other.color)