def draw_scene(self): for i in tqdm(range(self.cam.height)): for j in range(self.cam.width): pixel = vec3([0, 0, 0]) for s in range(self.cam.samples_per_pixel): u = (j + self.random()) / (self.cam.width - 1) v = (self.cam.height - i + self.random()) / (self.cam.height - 1) r = self.cam.get_ray(u, v) pixel += self.get_ray_colour(r, self.max_depth) colour(pixel).write_colour(self.cam.samples_per_pixel)
def get_ray_colour(self, r, rem_depth): if rem_depth == 0: return colour([0, 0, 0]) closest_object = self.get_closest_obj_intersection(r) if closest_object: scattered_rec = closest_object.mat.scatter(r, closest_object) if scattered_rec: return colour(scattered_rec.colour * self.get_ray_colour( scattered_rec.scattered, rem_depth - 1)) return colour([0, 0, 0]) return self.background(r)
def index(): return render_template("index.html", hex_a=random_hex(), hex_b=random_hex(), hex_c=random_hex(), hex_d=random_hex(), hex_e=random_hex(), hex_f=random_hex(), spawn=spawn.Spawn(), settlement=settlement.Settlement(), dinosaur=dinosaur.Dinosaur(), monster=monster.Monster(), title=settlement.Leader.get_name(colour.colour()), weird=weird.WierdGenerator().weird())
def _get_features(self): self.body = random.choice(Spawn.FORMS) roll = d(16) if roll >= 15: colours = random.sample(colour.COLOURS[1:], d(3) + 1) colours = ', '.join(colours[:-1]) + ' and ' + colours[-1] self.colour = colours else: self.colour = colour.colour() self.hide = random.choice(Spawn.HIDES) self.eyes = d(8) - 1 if self.eyes == 0: self.eyes = 'no' elif self.eyes == 7: self.eyes = 'multiple/insectile' self.mouth = random.choice(Spawn.MOUTHS)
def __init__(self): self.name = random.choice(Dinosaur.DINOSAURS_NAMES) self.dinosaur = Dinosaur.DINOSAURS[self.name] self.hd = self.dinosaur['HD'] self.hd = random.randint(max(1, self.hd - 4), self.hd + 4) self.ac = self.dinosaur['AC'] self.move = self.dinosaur['MV'] self.colour = colour.colour() self.hide = random.choice(Dinosaur.HIDES) if 'attacks' in self.dinosaur: self.attacks = "%s attacks" % self.dinosaur['attacks'] self.alignment = 'neutral' self.number = self.dinosaur['number']() self._get_features() self.powers = self._get_powers() self.immunities = self._get_immunities()
def get_colour(self): roll = d(100) if roll <= 1: return "Mutated" return colour.colour()
#!/usr/bin/env python3 from colour import colour from position import position from common import percent, length, angle, rc, ri # The extents that can be applied to a radial gradient extents = ("closest-corner", "closest-side", "farthest-corner", "farthest-side") # A tuple containing the different options a colour stop can be colourStop = (colour(), colour() + " " + percent(), colour() + " " + length()) # Generate a series of colour stops def nOrMoreColourStops(n=1): #if ri(0,1) == 1 or n == 1: # return rc(colourStop) #else: # return "".join((lambda: rc(colourStop))()+", " for x in range(0,ri(n,10))) + rc(colourStop) return "".join((lambda: rc(colourStop))() + ", " for x in range(0, ri(n, 10))) + rc(colourStop) radials = ( lambda: "radial-gradient(at {}, {})".format(position( ), nOrMoreColourStops(2)), lambda: "radial-gradient({} {}, {})".format( rc((rc( ("circle", "ellipse")) + " " + rc(extents), rc(extents) + " " + rc( ("circle", "ellipse")))), rc( ("at " + position(), "")), nOrMoreColourStops(2)), lambda: "radial-gradient({} {}, {})".format(
def index(): sky_colour = colour() return render_template('index.html', hex_code=sky_colour)
def page_not_found(e): sky_colour = colour() return render_template('index.html', hex_code=sky_colour)
from scene import scene from sphere import sphere from argparse import ArgumentParser from material import diffuse parser = ArgumentParser() parser.add_argument('--width', type=int) parser.add_argument('--height', type=int) parser.add_argument('--spp', type=int) args = parser.parse_args() CAM_WIDTH = args.width or 400 CAM_HEIGHT = args.height or 200 SAMPLES_PER_PIXEL = args.spp or 1 cam = camera(width=CAM_WIDTH, height=CAM_HEIGHT, samples_per_pixel=SAMPLES_PER_PIXEL) # ppm header print('P3 {} {} {}'.format(cam.width, cam.height, 255)) main_scene = scene(cam) s1 = sphere([0, 0, -1], 0.5, mat=diffuse(colour([0.7, 0.3, 0.3]))) s2 = sphere([0, -100.5, -2], 100, mat=diffuse(colour([0.8, 0.8, 0]))) main_scene.add_object(s1) main_scene.add_object(s2) main_scene.draw_scene()
def weird(self): if not self._weird: return self.init_weird() entry = self._weird.pop().format(colour=colour.colour(), hex="%02d%02d" % (dice.d(26), dice.d(16))) return Weird(entry)
used_adjective = False try: description = description.format(adjective=adjective) used_adjective = True except KeyError: pass try: description = description.format(colour=colour) except KeyError: pass roll = d(12) if roll <= 3: name = [adjective, noun] elif roll <= 7: if not used_adjective: name = [adjective, noun, description] else: name = [noun, description] else: name = [noun, description] if not name[0] in ['He', 'Her', 'It', 'She', 'Lady']: name = ['the'] + name return ' '. join(name) if __name__ == '__main__': for _ in xrange(int(sys.argv[1])): print "%s," % (Leader.get_name(colour.colour())),
def make_title(): return render_template("title.html", hex=random_hex(), title=settlement.Leader.get_name(colour.colour()))