Exemple #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)
Exemple #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)
Exemple #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)
Exemple #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")
Exemple #5
0
def step_impl(context):
    assert context.n3 == vector(0, 1, 0)
def step_impl(context):
    assert context.t.e2 == vector(1, -1, 0)
def step_impl(context):
    assert context.inv * context.v == vector(-2, 2, 2)
def step_impl(context):
    context.v = vector(-4, 6, 8)
def step_impl(context):
    context.up = vector(1, 1, 0)
Exemple #10
0
def step_impl(context):
    context.r = ray(point(-2, 0, 0), vector(0.2673, 0.5345, 0.8018))
Exemple #11
0
def step_impl(context):
    context.r = ray(point(0.5, 0, 5), vector(0, 0, -1))
Exemple #12
0
def step_impl(context):
    context.r = ray(point(-5, 0.5, 0), vector(1, 0, 0))
Exemple #13
0
def step_impl(context):
    assert context.normal == vector(-1, 0, 0)
def step_impl(context):
    context.direction = normalize(vector(0.1, 1, 1))
def step_impl(context):
    context.direction = normalize(vector(0, -1, 2))
Exemple #16
0
def step_impl(context):
    assert context.comps.reflectv == vector(0, sqrt(2) / 2, sqrt(2) / 2)
Exemple #17
0
 def local_normal_at(self, s, p):
     return vector(0, 1, 0)
Exemple #18
0
def step_impl(context):
    context.r = ray(point(0, -2, 0), vector(0.8018, 0.2673, 0.5345))
def step_impl(context):
    context.v = vector(-3, 4, 5)
Exemple #20
0
def step_impl(context):
    context.r = ray(point(0, 0, -2), vector(0.5345, 0.8018, 0.2673))
def step_impl(context):
    assert context.transform * context.v == vector(-8, 18, 32)
Exemple #22
0
def step_impl(context):
    context.r = ray(point(2, 0, 2), vector(0, 0, -1))
Exemple #23
0
def step_impl(context):
    context.r = ray(point(0, 0.5, -2), vector(0, 0, 1))
Exemple #24
0
def step_impl(context):
    context.r = ray(point(2, 2, 0), vector(-1, 0, 0))
Exemple #25
0
def step_impl(context):
    assert context.t.normal == vector(0, 0, -1)
Exemple #26
0
def step_impl(context):
    assert context.comps.eyev == vector(0, 0, -1)
Exemple #27
0
def step_impl(context):
    context.r = ray(point(0, -1, 0), vector(0, 1, 0))
Exemple #28
0
def step_impl(context):
    assert context.comps.normalv == vector(0, 0, -1)
Exemple #29
0
 def local_normal_at(self, s, point):
     return vector(point.x, point.y, point.z)
Exemple #30
0
def step_impl(context):
    context.r = ray(point(0, 1, -1), vector(0, -sqrt(2) / 2, sqrt(2) / 2))