コード例 #1
0
 def test_setitem_column_as_int(self):
     all_matrices = copy.deepcopy(utils.ALL_MATRICES)
     for mat, k in itertools.product(all_matrices, utils.ALL_SCALARS):
         vec = Vector([k] * mat.num_rows)
         for start in range(0, mat.num_columns):
             mat[:, start] = k
             utils.assert_vectors_almost_equal(mat[:, start], vec)
コード例 #2
0
 def test_make_unitary(self):
     for vec in utils.ALL_VECTORS:
         if vec.norm > 0:
             v = Vector.make_unitary(vec)
             self.assertAlmostEqual(v.norm, 1, PRECISION)
             self.assertEqual(v.dim, vec.dim)
             utils.assert_vectors_almost_equal(vec.norm * v, vec)
コード例 #3
0
 def test_cross_jacobi_identity(self):
     for v1, v2 in itertools.product(utils.ALL_VECTORS, utils.ALL_VECTORS):
         for v3 in utils.ALL_VECTORS:
             vec1 = vector_ops.cross(v1, vector_ops.cross(v2, v3))
             vec2 = vector_ops.cross(v2, vector_ops.cross(v3, v1))
             vec3 = vector_ops.cross(v3, vector_ops.cross(v1, v2))
             utils.assert_vectors_almost_equal(vec1 + vec2 + vec3,
                                               Vector.make_zero(3))
コード例 #4
0
 def test_cross_scalar_multiply(self):
     for v1, v2 in itertools.product(utils.ALL_VECTORS, utils.ALL_VECTORS):
         for k in utils.ALL_SCALARS:
             vec1 = vector_ops.cross(k * v1, v2)
             vec2 = vector_ops.cross(v1, k * v2)
             vec3 = k * vector_ops.cross(v1, v2)
             for a, b in itertools.combinations([vec1, vec2, vec3], 2):
                 utils.assert_vectors_almost_equal(a, b)
コード例 #5
0
 def test_setitem_column_as_sequence(self):
     factories = [lambda x: x, lambda x: x.components, list, tuple]
     all_matrices = copy.deepcopy(utils.ALL_MATRICES)
     for mat, k in itertools.product(all_matrices, utils.ALL_SCALARS):
         vec = Vector([k] * mat.num_rows)
         for start in range(0, mat.num_columns):
             for fac in factories:
                 mat[:, start] = fac(vec)
                 utils.assert_vectors_almost_equal(mat[:, start], vec)
コード例 #6
0
 def test_setitem_column_slice_as_int(self):
     all_matrices = copy.deepcopy(utils.ALL_MATRICES)
     for mat, k in itertools.product(all_matrices, utils.ALL_SCALARS):
         vec = Vector([k] * mat.num_rows)
         for start in range(0, mat.num_columns):
             for stop in range(start + 1, mat.num_columns + 1):
                 for step in range(1, stop):
                     mat[:, start:stop:step] = k
                     for i in range(start, stop, step):
                         utils.assert_vectors_almost_equal(mat[:, i], vec)
コード例 #7
0
 def test_scale(self):
     for v, k in itertools.product(utils.ALL_VECTORS, utils.ALL_SCALARS):
         if v.norm != 0 and k > 0:
             unit = vector_ops.build_unit_vector(v)
             utils.assert_vectors_almost_equal(
                 vector_ops.scale(unit, v.norm), v)
             utils.assert_vectors_almost_equal(
                 vector_ops.build_unit_vector(vector_ops.scale(v, k)), unit)
             utils.assert_vectors_almost_equal(
                 vector_ops.scale(v, (1 / v.norm)), unit)
コード例 #8
0
 def test_cross_parallel(self):
     v1 = Vector([1, 0, 0])
     v2 = Vector([2, 0, 0])
     utils.assert_vectors_almost_equal(vector_ops.cross(v1, v2),
                                       Vector.make_zero(3))
コード例 #9
0
 def test_subtract(self):
     for v1, v2 in itertools.product(utils.ALL_VECTORS, utils.ALL_VECTORS):
         utils.assert_vectors_almost_equal(vector_ops.subtract(v1, v2),
                                           vector_ops.add(v1, -v2))
コード例 #10
0
 def test_scalar_multiply(self):
     for v, k in itertools.product(utils.ALL_VECTORS, utils.ALL_SCALARS):
         utils.assert_vectors_almost_equal(k * v, vector_ops.scale(v, k))
コード例 #11
0
 def test_build_unit_vector(self):
     for vec in utils.ALL_VECTORS:
         if vec.norm > 0:
             unit = vector_ops.build_unit_vector(vec)
             self.assertAlmostEqual(unit.norm, 1, PRECISION)
             utils.assert_vectors_almost_equal(vec.norm * unit, vec)
コード例 #12
0
 def test_cross_dot_relationship(self):
     for v1, v2 in itertools.product(utils.ALL_VECTORS, utils.ALL_VECTORS):
         for v3 in utils.ALL_VECTORS:
             vec1 = vector_ops.cross(v1, vector_ops.cross(v2, v3))
             vec2 = ((v1 @ v3) * v2) - ((v1 @ v2) * v3)
             utils.assert_vectors_almost_equal(vec1, vec2)
コード例 #13
0
 def test_add(self):
     for v1, v2 in itertools.product(utils.ALL_VECTORS, utils.ALL_VECTORS):
         utils.assert_vectors_almost_equal(v1 + v2, vector_ops.add(v1, v2))
コード例 #14
0
 def test_cross_orthogonal(self):
     v1 = Vector([0, 1, 0])
     v2 = Vector([1, 0, 0])
     utils.assert_vectors_almost_equal(vector_ops.cross(v1, v2),
                                       Vector([0, 0, -1]))
コード例 #15
0
 def test_add_associative(self):
     for v1, v2 in itertools.product(utils.ALL_VECTORS, utils.ALL_VECTORS):
         for v3 in utils.ALL_VECTORS:
             vec1 = vector_ops.add(vector_ops.add(v1, v2), v3)
             vec2 = vector_ops.add(v1, vector_ops.add(v2, v3))
             utils.assert_vectors_almost_equal(vec1, vec2)
コード例 #16
0
 def test_cross_distributive(self):
     for v1, v2 in itertools.product(utils.ALL_VECTORS, utils.ALL_VECTORS):
         for v3 in utils.ALL_VECTORS:
             vec1 = vector_ops.cross(v1, v2 + v3)
             vec2 = vector_ops.cross(v1, v2) + vector_ops.cross(v1, v3)
             utils.assert_vectors_almost_equal(vec1, vec2)
コード例 #17
0
 def test_cross_self(self):
     for v1, v2 in itertools.product(utils.ALL_VECTORS, utils.ALL_VECTORS):
         if v1 == v2:
             vec = vector_ops.cross(v1, v2)
             utils.assert_vectors_almost_equal(vec, Vector.make_zero(3))
コード例 #18
0
 def test_cross_anticommutative(self):
     for v1, v2 in itertools.product(utils.ALL_VECTORS, utils.ALL_VECTORS):
         vec1 = vector_ops.cross(v1, v2)
         vec2 = vector_ops.cross(v2, v1)
         utils.assert_vectors_almost_equal(vec1, -vec2)