######################################################################### # Copyright (C) 2010-2011 Tavian Barnes # # # # This file is part of The Dimension Test Suite. # # # # The Dimension Test Suite is free software; you can redistribute it # # and/or modify it under the terms of the GNU General Public License as # # published by the Free Software Foundation; either version 3 of the # # License, or (at your option) any later version. # # # # The Dimension Test Suite is distributed in the hope that it will be # # useful, but WITHOUT ANY WARRANTY; without even the implied warranty # # of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # # General Public License for more details. # # # # You should have received a copy of the GNU General Public License # # along with this program. If not, see . # ######################################################################### camera = PerspectiveCamera( location = (3, 6, -11), look_at = 0, ) background = 0.5*sRGB(0.73, 0.90, 0.97) def make_light(x, y, z): return PointLight(location = (x, y, z), color = White/4) for x in [-3, -1, 1, 3]: for y in [0, 5]: lights.append(make_light(x, y, -5)) objects.append( Plane( normal = Y, distance = -4, texture = Texture( pigment = sRGB(0.73, 0.90, 0.97), finish = Ambient(sRGB(0.5)), ) ) ) class ShinySphere(Sphere): def __init__(self, x, y, z, size): size -= 1 dx = sin(2*pi*x/size) dy = sin(2*pi*y/size) dz = sin(2*pi*z/size) Sphere.__init__( self, center = 5*Vector(x, y, z)/size + Vector(dy + dz, dx + dz, dx + dy)/4 - Vector(2.5, 2.5, 2.5), radius = 2/size, texture = Texture( pigment = sRGB(x/size, y/size, z/size), finish = Ambient(sRGB(0.25)) + Diffuse(sRGB(0.8)) + Reflection(0, 0.25) ) ) size = 10 for x in range(size): for y in range(size): for z in range(size): objects.append(ShinySphere(x, y, z, size)) recursion_limit = 2*size