Exemplo n.º 1
0
def test_multiply_a_vector_by_a_fraction():
    v = vector(1, -2, 3)
    scalar = 0.5
    expected_vector = vector(0.5, -1, 1.5)

    with tf.Session() as sess:
        actual, expected = sess.run([v * scalar, expected_vector])

    assert ((actual == expected).all())
Exemplo n.º 2
0
def test_dividing_a_vector_by_a_scalar():
    v = vector(1, -2, 3)
    scalar = 2
    expected_vector = vector(0.5, -1, 1.5)

    with tf.Session() as sess:
        actual, expected = sess.run([v / scalar, expected_vector])

    assert ((actual == expected).all())
Exemplo n.º 3
0
def test_sum_of_two_vectors_is_a_vector():
    v1 = vector(3, -2, 5)
    v2 = vector(-2, 3, 1)
    expected_vector = vector(1, 1, 6)

    with tf.Session() as sess:
        actual, expected = sess.run([v1 + v2, expected_vector])

    assert ((actual == expected).all())
Exemplo n.º 4
0
def test_dot_product_of_vectors():
    v1 = vector(1, 2, 3)
    v2 = vector(2, 3, 4)
    actual_dot_product = dot(v1, v2)

    with tf.Session() as sess:
        actual = sess.run(actual_dot_product)

    assert (actual == 20)
Exemplo n.º 5
0
def test_difference_of_two_vectors_is_a_vector():
    v1 = vector(3, 2, 1)
    v2 = vector(5, 6, 7)
    expected_vector = vector(-2, -4, -6)

    with tf.Session() as sess:
        actual, expected = sess.run([v1 - v2, expected_vector])

    assert ((actual == expected).all())
Exemplo n.º 6
0
def test_a_scaling_matrix_applied_to_a_vecor():
    transform = transformations.scaling(2, 3, 4)
    v = vector(-4, 6, 8)
    expected_vector = vector(-8, 18, 32)

    with tf.Session() as sess:
        [expected, actual] = sess.run([expected_vector, transform(v)])

    assert((expected == actual).all())
Exemplo n.º 7
0
def test_multiplying_the_inverse_of_a_scaling_matrix():
    transform = transformations.scaling(2, 3, 4)
    inverse = transformations.invert(transform)
    v = vector(-4, 6, 8)
    expected_vector = vector(-2, 2, 2)

    with tf.Session() as sess:
        [expected, actual] = sess.run([expected_vector, inverse(v)])

    assert((expected == actual).all())
Exemplo n.º 8
0
def test_normalize_vector():
    v = vector(1, 2, 3)
    expected_vector = vector(1. / math.sqrt(14), 2. / math.sqrt(14),
                             3. / math.sqrt(14))
    actual_vector = normalize(v)

    with tf.Session() as sess:
        actual, expected = sess.run([actual_vector, expected_vector])

    np.testing.assert_almost_equal(actual, expected, 7)
Exemplo n.º 9
0
def test_cross_product_of_vectors():
    v1 = vector(1, 2, 3)
    v2 = vector(2, 3, 4)
    actual_cross_product = cross(v1, v2)
    expected_cross_product = vector(-1, 2, -1)

    with tf.Session() as sess:
        actual, expected = sess.run(
            [actual_cross_product, expected_cross_product])

    assert ((actual == expected).all())
Exemplo n.º 10
0
def test_computing_the_magnitude_of_vector():
    actual_magnitude = tf.norm(vector(-1, -2, -3))
    expected_magnitude = tf.constant(math.sqrt(14), dtype=tf.float32)

    with tf.Session() as sess:
        actual, expected = sess.run([actual_magnitude, expected_magnitude])

    np.testing.assert_almost_equal(actual, expected, 7)
Exemplo n.º 11
0
def test_translation_does_not_affect_vectors():
    transform = transformations.translation(5, -3, 2)
    expected_vector = vector(-3, 4, 5)

    with tf.Session() as sess:
        [expected, actual] = sess.run(
            [expected_vector, transform(expected_vector)])

    assert((expected == actual).all())
Exemplo n.º 12
0
def test_difference_of_a_vector_and_a_point_is_a_point():
    p = point(3, 2, 1)
    v = vector(5, 6, 7)
    expected_point = point(-2, -4, -6)

    with tf.Session() as sess:
        actual, expected = sess.run([p - v, expected_point])

    assert ((actual == expected).all())
Exemplo n.º 13
0
def test_difference_of_two_point_is_a_vector():
    p1 = point(3, 2, 1)
    p2 = point(5, 6, 7)
    expected_vector = vector(-2, -4, -6)

    with tf.Session() as sess:
        actual, expected = sess.run([p1 - p2, expected_vector])

    assert ((actual == expected).all())
Exemplo n.º 14
0
def test_sum_of_vector_and_point_is_a_point():
    v = vector(3, -2, 5)
    p = point(-2, 3, 1)
    expected_point = point(1, 1, 6)

    with tf.Session() as sess:
        actual, expected = sess.run([v + p, expected_point])

    assert ((actual == expected).all())
Exemplo n.º 15
0
def test_a_vector_is_an_array_with_w_set_to_0():
    actual_vector = vector(4.3, -4.2, 3.1)
    expected_vector = tf.constant(np.array([4.3, -4.2, 3.1, 0]),
                                  dtype=tf.float32)

    with tf.Session() as sess:
        actual, expected = sess.run([actual_vector, expected_vector])

    assert ((actual == expected).all())
Exemplo n.º 16
0
def test_translating_a_ray():
    origin = point(1, 2, 3)
    direction = vector(0, 1, 0)
    r = Ray(origin, direction)
    expected_origin = point(4, 6, 8)
    expected_direction = vector(0, 1, 0)

    m = tftracer.transformations.translation(3, 4, 5)

    with tf.Session() as sess:
        [actual_origin, actual_direction, expected_origin,
         expected_direction] = sess.run([
             r.transform(m).origin,
             r.transform(m).direction, expected_origin, expected_direction
         ])

    assert (np.allclose(actual_origin, expected_origin))
    assert (np.allclose(actual_direction, expected_direction))
Exemplo n.º 17
0
def test_a_sphere_behind_a_ary():
    xs = Sphere().intersect(Ray(point(0, 0, 5), vector(0, 0, 1)))

    with tf.Session() as sess:
        [actual_xs] = sess.run([xs])

    assert (len(actual_xs) == 2)
    assert (actual_xs[0] == -6.0)
    assert (actual_xs[1] == -4.0)
Exemplo n.º 18
0
def test_a_ray_originates_inside_a_sphere():
    xs = Sphere().intersect(Ray(point(0, 0, 0), vector(0, 0, 1)))

    with tf.Session() as sess:
        [actual_xs] = sess.run([xs])

    assert (len(actual_xs) == 2)
    assert (actual_xs[0] == -1.0)
    assert (actual_xs[1] == 1.0)
Exemplo n.º 19
0
def test_a_ray_misses_a_sphere():
    xs = Sphere().intersect(Ray(point(0, 2, -5), vector(0, 0, 1)))

    with tf.Session() as sess:
        [actual_xs] = sess.run([xs])

    assert (len(actual_xs) == 2)
    assert (math.isnan(actual_xs[0]))
    assert (math.isnan(actual_xs[1]))
Exemplo n.º 20
0
def test_a_ray_intersects_a_sphere_at_a_tangent():
    xs = Sphere().intersect(Ray(point(0, 1, -5), vector(0, 0, 1)))

    with tf.Session() as sess:
        [actual_xs] = sess.run([xs])

    assert (len(actual_xs) == 2)
    assert (actual_xs[0] == 5.0)
    assert (actual_xs[1] == 5.0)
Exemplo n.º 21
0
def test_intersecting_a_scaled_sphere_with_a_ray():
    r = Ray(point(0., 0., -5.), vector(0., 0., 1.))
    s = Sphere(transformations.scaling(2, 2, 2))

    xs = s.intersect(r)

    with tf.Session() as sess:
        actual_xs = sess.run(xs)

    assert (len(actual_xs) == 2)
    assert (actual_xs[0] == 3)
    assert (actual_xs[1] == 7)
Exemplo n.º 22
0
def test_computing_a_point_from_a_distance():
    origin = point(2, 3, 4)
    direction = vector(1, 0, 0)
    r = Ray(origin, direction)

    with tf.Session() as sess:
        [
            expected1, expected2, expected3, expected4, actual1, actual2,
            actual3, actual4
        ] = sess.run([
            point(2, 3, 4),
            point(3, 3, 4),
            point(1, 3, 4),
            point(4.5, 3, 4),
            r.position(0),
            r.position(1),
            r.position(-1),
            r.position(2.5)
        ])

    assert ((expected1 == actual1).all())
    assert ((expected2 == actual2).all())
    assert ((expected3 == actual3).all())
    assert ((expected4 == actual4).all())