def test_invalid_init(self): with self.assertRaises(ValueError): Matrix44((0, 1, 2, 3), (4, 5, 6, 7), (8, 9, 10, 11), (12, 13, 14, 15, 16)) with self.assertRaises(ValueError): Matrix44( (0, 1, 2, 3), (4, 5, 6, 7), (8, 9, 10, 11), ) with self.assertRaises(ValueError): Matrix44( [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]) with self.assertRaises(ValueError): Matrix44([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14])
def test_init_1(self): matrix = Matrix44( [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]) assert matrix.get_row(0) == (0.0, 1.0, 2.0, 3.0) assert matrix.get_row(1) == (4.0, 5.0, 6.0, 7.0) assert matrix.get_row(2) == (8.0, 9.0, 10.0, 11.0) assert matrix.get_row(3) == (12.0, 13.0, 14.0, 15.0)
def test_init_4(self): matrix = Matrix44((0, 1, 2, 3), (4, 5, 6, 7), (8, 9, 10, 11), (12, 13, 14, 15)) self.assertEqual(matrix.get_row(0), (0.0, 1.0, 2.0, 3.0)) self.assertEqual(matrix.get_row(1), (4.0, 5.0, 6.0, 7.0)) self.assertEqual(matrix.get_row(2), (8.0, 9.0, 10.0, 11.0)) self.assertEqual(matrix.get_row(3), (12.0, 13.0, 14.0, 15.0))
def test_set(self): matrix = Matrix44() matrix.set((2., 3., 4., 5.), (6., 7., 8., 9.), (10., 11., 12., 13.), (14., 15., 16., 17.)) self.assertEqual(matrix.get_row(0), (2.0, 3.0, 4.0, 5.0)) self.assertEqual(matrix.get_row(1), (6.0, 7.0, 8.0, 9.0)) self.assertEqual(matrix.get_row(2), (10.0, 11.0, 12.0, 13.0)) self.assertEqual(matrix.get_row(3), (14.0, 15.0, 16.0, 17.0))
def test_transpose(self): matrix = Matrix44((0, 1, 2, 3), (4, 5, 6, 7), (8, 9, 10, 11), (12, 13, 14, 15)) matrix.transpose() self.assertEqual(matrix.get_row(0), (0.0, 4.0, 8.0, 12.0)) self.assertEqual(matrix.get_row(1), (1.0, 5.0, 9.0, 13.0)) self.assertEqual(matrix.get_row(2), (2.0, 6.0, 10.0, 14.0)) self.assertEqual(matrix.get_row(3), (3.0, 7.0, 11.0, 15.0))
def test_transpose(self): matrix = Matrix44((0, 1, 2, 3), (4, 5, 6, 7), (8, 9, 10, 11), (12, 13, 14, 15)) matrix.transpose() assert matrix.get_row(0) == (0.0, 4.0, 8.0, 12.0) assert matrix.get_row(1) == (1.0, 5.0, 9.0, 13.0) assert matrix.get_row(2) == (2.0, 6.0, 10.0, 14.0) assert matrix.get_row(3) == (3.0, 7.0, 11.0, 15.0)
def test_set(self): matrix = Matrix44() matrix.set((2., 3., 4., 5.), (6., 7., 8., 9.), (10., 11., 12., 13.), (14., 15., 16., 17.)) assert matrix.get_row(0) == (2.0, 3.0, 4.0, 5.0) assert matrix.get_row(1) == (6.0, 7.0, 8.0, 9.0) assert matrix.get_row(2) == (10.0, 11.0, 12.0, 13.0) assert matrix.get_row(3) == (14.0, 15.0, 16.0, 17.0)
def test_set_col(self): matrix = Matrix44() matrix.set_col(0, (2., 3., 4., 5.)) assert matrix.get_col(0) == (2.0, 3.0, 4.0, 5.0) matrix.set_col(1, (6., 7., 8., 9.)) assert matrix.get_col(1) == (6.0, 7.0, 8.0, 9.0) matrix.set_col(2, (10., 11., 12., 13.)) assert matrix.get_col(2) == (10.0, 11.0, 12.0, 13.0) matrix.set_col(3, (14., 15., 16., 17.)) assert matrix.get_col(3) == (14.0, 15.0, 16.0, 17.0)
def fetch_matrix(tags: 'Tags', code: int) -> Tuple[Tags, Optional[Matrix44]]: values = [] remaining = Tags() for tag in tags: if tag.code == code: values.append(tag.value) if len(values) == 16: # enough values collected, code 43 is maybe used for two matrices code = -1 else: remaining.append(tag) if len(values) == 16: # only if valid matrix return remaining, Matrix44(values) else: return tags, None
def __init__(self): super().__init__() self.transformation_matrix_revolved_entity = Matrix44()
def test_init_0(self): matrix = Matrix44() self.assertAlmostEqual(matrix[0, 0], 1.) self.assertAlmostEqual(matrix[1, 1], 1.) self.assertAlmostEqual(matrix[2, 2], 1.) self.assertAlmostEqual(matrix[3, 3], 1.)
def test_inverse_error(self): m = Matrix44([1] * 16) pytest.raises(ZeroDivisionError, m.inverse)
def test_init_0(self): matrix = Matrix44() isclose(matrix[0, 0], 1.) isclose(matrix[1, 1], 1.) isclose(matrix[2, 2], 1.) isclose(matrix[3, 3], 1.)
def test_inverse_error(self): m = Matrix44([1] * 16) self.assertRaises(ZeroDivisionError, m.inverse)
def get_matrix(subclass: 'Tags', code: int) -> Matrix44: values = [tag.value for tag in subclass.find_all(code)] if len(values) != 16: raise DXFStructureError('Invalid transformation matrix.') return Matrix44(values)
def test_iter(self): values = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15] matrix = Matrix44(values) for v1, m1 in zip(values, matrix): assert isclose(v1, m1)
def __init__(self, doc: 'Drawing' = None): super().__init__(doc) self.transformation_matrix_sweep_entity = Matrix44() self.transformation_matrix_path_entity = Matrix44() self.sweep_entity_transformation_matrix = Matrix44() self.path_entity_transformation_matrix = Matrix44()
def test_copy(self): values = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15] m1 = Matrix44(values) matrix = m1.copy() for v1, m1 in zip(values, matrix): assert isclose(v1, m1)
def test_get_row(self): matrix = Matrix44() self.assertEqual(matrix.get_row(0), (1.0, 0.0, 0.0, 0.0)) self.assertEqual(matrix.get_row(1), (0.0, 1.0, 0.0, 0.0)) self.assertEqual(matrix.get_row(2), (0.0, 0.0, 1.0, 0.0)) self.assertEqual(matrix.get_row(3), (0.0, 0.0, 0.0, 1.0))
def test_copy(self): values = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15] m1 = Matrix44(values) matrix = m1.copy() for v1, m1 in zip(values, matrix): self.assertAlmostEqual(v1, m1)
def test_get_row(self): matrix = Matrix44() assert matrix.get_row(0) == (1.0, 0.0, 0.0, 0.0) assert matrix.get_row(1) == (0.0, 1.0, 0.0, 0.0) assert matrix.get_row(2) == (0.0, 0.0, 1.0, 0.0) assert matrix.get_row(3) == (0.0, 0.0, 0.0, 1.0)
def diag(values): m = Matrix44() for i, value in enumerate(values): m[i, i] = value return m
def __init__(self): super().__init__() self.transformation_matrix_sweep_entity = Matrix44() self.transformation_matrix_path_entity = Matrix44() self.sweep_entity_transformation_matrix = Matrix44() self.path_entity_transformation_matrix = Matrix44()
def __init__(self, doc: 'Drawing' = None): super().__init__(doc) self.transformation_matrix_revolved_entity = Matrix44()
def test_get_col(self): matrix = Matrix44() assert matrix.get_col(0) == (1.0, 0.0, 0.0, 0.0) assert matrix.get_col(1) == (0.0, 1.0, 0.0, 0.0) assert matrix.get_col(2) == (0.0, 0.0, 1.0, 0.0) assert matrix.get_col(3) == (0.0, 0.0, 0.0, 1.0)