38 lines
670 B
Python
38 lines
670 B
Python
import numpy as np
|
|
|
|
from plane import Plane
|
|
from ray import Ray
|
|
from vector import Vector
|
|
|
|
|
|
def test_plane():
|
|
p = Plane(
|
|
Vector.fromargs(0, 0, 0),
|
|
Vector.fromargs(0, 0, 1),
|
|
)
|
|
assert (p & Vector.fromargs(0, 0, 0))
|
|
assert (p & Vector.fromargs(1, 1, 0))
|
|
assert not (p & Vector.fromargs(0, 0, -1))
|
|
|
|
p = Plane(
|
|
Vector.fromargs(1, 1),
|
|
Vector.fromargs(1, 1),
|
|
)
|
|
|
|
assert not (p & Vector.fromargs(0, 0))
|
|
assert (p & Vector.fromargs(2, 0))
|
|
|
|
|
|
def test_reflection():
|
|
p = Plane(
|
|
Vector.fromargs(0, 0),
|
|
Vector.fromargs(0, 1),
|
|
)
|
|
|
|
r = Ray(
|
|
Vector.fromargs(-1, 1),
|
|
Vector.fromargs(1, -1),
|
|
)
|
|
|
|
assert p.intersect(r) == np.sqrt(2)
|