Example #1
0
    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)
Example #2
0
    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)
Example #3
0
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())
Example #4
0
 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)
Example #5
0
 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()
Example #6
0
 def get_colour(self):
     roll = d(100)
     if roll <= 1:
         return "Mutated"
     return colour.colour()
Example #7
0
#!/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(
Example #8
0
def index():
    sky_colour = colour()
    return render_template('index.html', hex_code=sky_colour)
Example #9
0
def page_not_found(e):
    sky_colour = colour()
    return render_template('index.html', hex_code=sky_colour)
Example #10
0
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()
Example #11
0
 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)
Example #12
0
        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())),

Example #13
0
def make_title():
    return render_template("title.html", hex=random_hex(), title=settlement.Leader.get_name(colour.colour()))