Exemplo n.º 1
0
    def local_normal_at(self, cube, point):
        maxc = max(abs(point.x), abs(point.y), abs(point.z))

        if maxc == abs(point.x):
            return vector(point.x, 0, 0)
        elif maxc == abs(point.y):
            return vector(0, point.y, 0)
        else:
            return vector(0, 0, point.z)
Exemplo n.º 2
0
    def local_normal_at(self, cylinder, point):
        dist = point.x ** 2 + point.z ** 2

        if dist < 1 and point.y >= cylinder.maximum - EPSILON:
            return vector(0, 1, 0)
        elif dist < 1 and point.y <= cylinder.minimum + EPSILON:
            return vector(0, -1, 0)
        else:
            return vector(point.x, 0, point.z)
Exemplo n.º 3
0
    def local_normal_at(self, cone, point):
        dist = point.x**2 + point.z**2

        if dist < 1 and point.y >= cone.maximum - EPSILON:
            return vector(0, 1, 0)
        elif dist < 1 and point.y <= cone.minimum + EPSILON:
            return vector(0, -1, 0)
        else:
            y = sqrt(dist)
            if point.y > 0:
                y = -y
            return vector(point.x, y, point.z)
Exemplo n.º 4
0
    right.material = material()
    right.material.color = color(0.5, 1, 0.1)
    right.material.diffuse = 0.7
    right.material.specular = 0.3
    w.objects.append(right)

    left = sphere()
    left.transform = translation(-1.5, 0.33, -0.75) * scaling(0.33, 0.33, 0.33)
    left.material = material()
    left.material.color = color(1, 0.8, 0.1)
    left.material.diffuse = 0.7
    left.material.specular = 0.3
    w.objects.append(left)

    cam = camera(400, 200, pi / 3)
    cam.transform = view_transform(point(0, 1.5, -5), point(0, 1, 0),
                                   vector(0, 1, 0))

    canvas = render(cam, w)

    end = time.time()
    print("Finished render.")
    print(str(round(end - start, 2)) + "s")

    start = time.time()
    print("Start writing file...")
    canvas_to_ppm(canvas).write_file("images/planes.ppm")
    end = time.time()
    print("Finished writing file.")
    print(str(round(end - start, 2)) + "s")
Exemplo n.º 5
0
def step_impl(context):
    assert context.n3 == vector(0, 1, 0)
Exemplo n.º 6
0
def step_impl(context):
    assert context.t.e2 == vector(1, -1, 0)
Exemplo n.º 7
0
def step_impl(context):
    assert context.inv * context.v == vector(-2, 2, 2)
Exemplo n.º 8
0
def step_impl(context):
    context.v = vector(-4, 6, 8)
Exemplo n.º 9
0
def step_impl(context):
    context.up = vector(1, 1, 0)
Exemplo n.º 10
0
def step_impl(context):
    context.r = ray(point(-2, 0, 0), vector(0.2673, 0.5345, 0.8018))
Exemplo n.º 11
0
def step_impl(context):
    context.r = ray(point(0.5, 0, 5), vector(0, 0, -1))
Exemplo n.º 12
0
def step_impl(context):
    context.r = ray(point(-5, 0.5, 0), vector(1, 0, 0))
Exemplo n.º 13
0
def step_impl(context):
    assert context.normal == vector(-1, 0, 0)
Exemplo n.º 14
0
def step_impl(context):
    context.direction = normalize(vector(0.1, 1, 1))
Exemplo n.º 15
0
def step_impl(context):
    context.direction = normalize(vector(0, -1, 2))
Exemplo n.º 16
0
def step_impl(context):
    assert context.comps.reflectv == vector(0, sqrt(2) / 2, sqrt(2) / 2)
Exemplo n.º 17
0
 def local_normal_at(self, s, p):
     return vector(0, 1, 0)
Exemplo n.º 18
0
def step_impl(context):
    context.r = ray(point(0, -2, 0), vector(0.8018, 0.2673, 0.5345))
Exemplo n.º 19
0
def step_impl(context):
    context.v = vector(-3, 4, 5)
Exemplo n.º 20
0
def step_impl(context):
    context.r = ray(point(0, 0, -2), vector(0.5345, 0.8018, 0.2673))
Exemplo n.º 21
0
def step_impl(context):
    assert context.transform * context.v == vector(-8, 18, 32)
Exemplo n.º 22
0
def step_impl(context):
    context.r = ray(point(2, 0, 2), vector(0, 0, -1))
Exemplo n.º 23
0
def step_impl(context):
    context.r = ray(point(0, 0.5, -2), vector(0, 0, 1))
Exemplo n.º 24
0
def step_impl(context):
    context.r = ray(point(2, 2, 0), vector(-1, 0, 0))
Exemplo n.º 25
0
def step_impl(context):
    assert context.t.normal == vector(0, 0, -1)
Exemplo n.º 26
0
def step_impl(context):
    assert context.comps.eyev == vector(0, 0, -1)
Exemplo n.º 27
0
def step_impl(context):
    context.r = ray(point(0, -1, 0), vector(0, 1, 0))
Exemplo n.º 28
0
def step_impl(context):
    assert context.comps.normalv == vector(0, 0, -1)
Exemplo n.º 29
0
 def local_normal_at(self, s, point):
     return vector(point.x, point.y, point.z)
Exemplo n.º 30
0
def step_impl(context):
    context.r = ray(point(0, 1, -1), vector(0, -sqrt(2) / 2, sqrt(2) / 2))