Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def __init__(self):
self.objects = []
self.lightPoints = []
self.position = Point(0, 1.8, 10)
self.lookingAt = Point.ZERO
self.fieldOfView = 45
self.recursionDepth = 0
def bench_raytrace(loops, width, height, filename):
range_it = range(loops)
t0 = pyperf.perf_counter()
for i in range_it:
canvas = Canvas(width, height)
s = Scene()
s.addLight(Point(30, 30, 10))
s.addLight(Point(-10, 100, 30))
s.lookAt(Point(0, 3, 0))
s.addObject(Sphere(Point(1, 3, -10), 2),
SimpleSurface(baseColour=(1, 1, 0)))
for y in range(6):
s.addObject(Sphere(Point(-3 - y * 0.4, 2.3, -5), 0.4),
SimpleSurface(baseColour=(y / 6.0, 1 - y / 6.0, 0.5)))
s.addObject(Halfspace(Point(0, 0, 0), Vector.UP),
CheckerboardSurface())
s.render(canvas)
dt = pyperf.perf_counter() - t0
if filename:
canvas.write_ppm(filename)
return dt
def __add__(self, other):
if other.isPoint():
return Point(self.x + other.x, self.y + other.y, self.z + other.z)
else:
return Vector(self.x + other.x, self.y + other.y, self.z + other.z)
class Ray(object):
def __init__(self, point, vector):
self.point = point
self.vector = vector.normalized()
def __repr__(self):
return 'Ray(%s,%s)' % (repr(self.point), repr(self.vector))
def pointAtTime(self, t):
return self.point + self.vector.scale(t)
Point.ZERO = Point(0, 0, 0)
class Canvas(object):
def __init__(self, width, height):
self.bytes = array.array('B', [0] * (width * height * 3))
for i in range(width * height):
self.bytes[i * 3 + 2] = 255
self.width = width
self.height = height
def plot(self, x, y, r, g, b):
i = ((self.height - y - 1) * self.width + x) * 3
self.bytes[i] = max(0, min(255, int(r * 255)))
self.bytes[i + 1] = max(0, min(255, int(g * 255)))
self.bytes[i + 2] = max(0, min(255, int(b * 255)))
def bench_raytrace(loops, width, height, filename):
range_it = range(loops)
t0 = pyperf.perf_counter()
for i in range_it:
canvas = Canvas(width, height)
s = Scene()
s.addLight(Point(30, 30, 10))
s.addLight(Point(-10, 100, 30))
s.lookAt(Point(0, 3, 0))
s.addObject(Sphere(Point(1, 3, -10), 2),
SimpleSurface(baseColour=(1, 1, 0)))
for y in range(6):
s.addObject(Sphere(Point(-3 - y * 0.4, 2.3, -5), 0.4),
SimpleSurface(baseColour=(y / 6.0, 1 - y / 6.0, 0.5)))
s.addObject(Halfspace(Point(0, 0, 0), Vector.UP),
CheckerboardSurface())
s.render(canvas)
dt = pyperf.perf_counter() - t0
if filename:
canvas.write_ppm(filename)
return dt
def baseColourAt(self, p):
v = p - Point.ZERO
v.scale(1.0 / self.checkSize)
if ((int(abs(v.x) + 0.5)
+ int(abs(v.y) + 0.5)
+ int(abs(v.z) + 0.5)) % 2):
return self.otherColour
else:
return self.baseColour
def bench_raytrace(loops, width, height, filename):
range_it = range(loops)
t0 = pyperf.perf_counter()
for i in range_it:
canvas = Canvas(width, height)
s = Scene()
s.addLight(Point(30, 30, 10))
s.addLight(Point(-10, 100, 30))
s.lookAt(Point(0, 3, 0))
s.addObject(Sphere(Point(1, 3, -10), 2),
SimpleSurface(baseColour=(1, 1, 0)))
for y in range(6):
s.addObject(Sphere(Point(-3 - y * 0.4, 2.3, -5), 0.4),
SimpleSurface(baseColour=(y / 6.0, 1 - y / 6.0, 0.5)))
s.addObject(Halfspace(Point(0, 0, 0), Vector.UP),
CheckerboardSurface())
s.render(canvas)
dt = pyperf.perf_counter() - t0
if filename:
canvas.write_ppm(filename)
return dt
def bench_raytrace(loops, width, height, filename):
range_it = range(loops)
t0 = pyperf.perf_counter()
for i in range_it:
canvas = Canvas(width, height)
s = Scene()
s.addLight(Point(30, 30, 10))
s.addLight(Point(-10, 100, 30))
s.lookAt(Point(0, 3, 0))
s.addObject(Sphere(Point(1, 3, -10), 2),
SimpleSurface(baseColour=(1, 1, 0)))
for y in range(6):
s.addObject(Sphere(Point(-3 - y * 0.4, 2.3, -5), 0.4),
SimpleSurface(baseColour=(y / 6.0, 1 - y / 6.0, 0.5)))
s.addObject(Halfspace(Point(0, 0, 0), Vector.UP),
CheckerboardSurface())
s.render(canvas)
dt = pyperf.perf_counter() - t0
if filename:
canvas.write_ppm(filename)
return dt