コード例 #1
0
 def test_rotations(self):
     v = Vec2(1, 0)
     assert simeq(v.rotated_by(pi / 2), Vec2(0, 1))
     assert simeq(v.rotated_axis(pi / 2, Vec2(1, 0)), v)
コード例 #2
0
 def test_polar(self):
     r, t = Vec2(1, 1).polar()
     assert simeq(r, sqrt(2))
     assert simeq(t, pi / 4)
コード例 #3
0
 def test_middle(self, unitary, null):
     assert simeq(unitary.middle(null), null.middle(unitary))
     assert simeq(unitary.middle(null), unitary / 2)
コード例 #4
0
 def test_scalar_division(self, obj, scalar, smul):
     value = 1 / scalar
     assert simeq(obj / value, smul)
コード例 #5
0
 def test_pairwise_multiplication(self, a, b, mul):
     assert simeq(a * b, mul)
コード例 #6
0
 def test_scalar_division(self, obj, scalar, smul):
     value = 1 / scalar
     assert simeq(obj / value, smul)
コード例 #7
0
 def test_clamp_to_value(self, unitary):
     assert simeq(unitary.clamp(2), 2 * unitary)
     assert simeq(unitary.clamp(0.5), 0.5 * unitary)
コード例 #8
0
 def test_inplace_displacement_using_pos(self, mutable):
     newpos = mutable.pos + (10, 5)
     mutable.pos += (10, 5)
     assert simeq(mutable.pos, newpos)
コード例 #9
0
 def test_rotations(self):
     v = Vec(1, 0)
     assert simeq(v.rotate(pi / 2), Vec(0, 1))
     assert simeq(v.rotate_at(pi / 2, Vec(1, 0)), v)
コード例 #10
0
 def test_polar(self):
     r, t = Vec(1, 1).polar()
     assert simeq(r, sqrt(2))
     assert simeq(t, pi / 4)
コード例 #11
0
 def test_vector_norm_defaults_to_euclidean(self, cls, args):
     vec = cls(*(1 for _ in args))
     assert simeq(vec.norm(), sqrt(len(args)))
     assert simeq(abs(vec), sqrt(len(args)))
コード例 #12
0
 def test_angle(self, unitary):
     assert simeq(unitary.angle(unitary), 0)
     assert simeq(unitary.angle(-unitary), pi)
コード例 #13
0
 def test_distance(self, unitary, null):
     assert simeq(unitary.distance(unitary), 0)
     assert simeq(unitary.distance(null), 1)
     assert simeq(unitary.distance(-unitary), 2)
コード例 #14
0
 def test_rotated_keeps_norm(self, u):
     for t in range(5):
         Z1 = u.norm()
         Z2 = u.rotated_by(6.28 * t / 5).norm()
         assert simeq(Z1, Z2)
コード例 #15
0
 def test_clamp_missing_interval(self, unitary):
     assert simeq(unitary.clamp(2, 3), 2 * unitary)
     assert simeq(unitary.clamp(0.1, 0.5), 0.5 * unitary)
コード例 #16
0
 def test_displaced(self, obj):
     new = obj.move(10, 5)
     newpos = obj.pos + (10, 5)
     assert simeq(new.pos, newpos)
コード例 #17
0
 def test_direction_is_always_unitary(self):
     u = Direction2(1, 1)
     assert simeq(u.x, 1 / sqrt(2))
     assert simeq(u.y, 1 / sqrt(2))
コード例 #18
0
 def test_default_object_is_on_origin(self, obj):
     assert simeq(obj.pos, (0, 0))
コード例 #19
0
 def test_pairwise_multiplication(self, a, b, mul):
     assert simeq(a * b, mul)
コード例 #20
0
 def test_scalar_multiplication(self, obj, scalar, smul):
     assert simeq(obj * scalar, smul)
     assert simeq(scalar * obj, smul)
コード例 #21
0
 def test_scalar_multiplication(self, obj, scalar, smul):
     assert simeq(obj * scalar, smul)
     assert simeq(scalar * obj, smul)
コード例 #22
0
 def test_spherical_coordinates(self):
     r, phi, theta = Vec3(1, 1, 0).spherical()
     assert simeq(r, sqrt(2))
     assert simeq(phi, pi / 2)
     assert simeq(theta, pi / 4)
コード例 #23
0
 def test_lerp(self, u, v):
     assert simeq(u.lerp(v), v.lerp(u))
     assert simeq(u.middle(v), u.lerp(v))
     assert simeq(u.lerp(v, 0), u)
     assert simeq(u.lerp(v, 1), v)