import math if __name__ == "__main__": points = [[0, 0], [0, 5], [3, 5], [3, 4], [1, 4], [1, 3], [2, 3], [2, 2], [1, 2], [1, 0]] x = [point[0] for point in points] y = [point[1] for point in points] plt.figure(figsize=(5, 5)) # figsize传入元组,单位英寸 plt.xlim(-10, 10) plt.ylim(-10, 10) plt.plot(x, y) # plt.show() P = Matrix(points) # T = Matrix([[2, 0], [0, 1.5]]) # 拉伸 # T = Matrix([[1, 0], [0, -1]]) # x轴翻转 # T = Matrix([[-1, 0], [0, 1]]) # y轴翻转 # T = Matrix([[-1, 0], [0, -1]]) # 原点翻转 # T = Matrix([[1, 0.5], [0, 1]]) # x轴错切:斜体效果 # T = Matrix([[1, 0], [0.5, 1]]) # y轴错切:书本翻页效果 theta = math.pi / 3 # 1/3Π(弧度制),60° # T = Matrix([[math.cos(theta), math.sin(theta)], [-math.sin(theta), math.cos(theta)]]) # 旋转 theta 角度 T = Matrix([[0, -1], [1, 0]]) # 矩阵就是空间,将图形放到新的空间(单位矩阵就是标准的空间) P2 = T.dot(P.T()) plt.plot([P2.col_vector(i)[0] for i in range(P2.col_num())], [P2.col_vector(i)[1] for i in range(P2.col_num())]) plt.show()
print('=' * 40, '\n', '\n矩阵基本运算\n矩阵数量乘法\n', '=' * 30) print('matrix: \t%s' % matrix) print(matrix * 2) print(2.5 * matrix) # 右乘法 print(matrix / 2) # 除法 print(+matrix, -matrix) print('=' * 40, '\n', '\n矩阵基本运算\n零矩阵\n', '=' * 30) print('zero_3_5 => %s' % Matrix.zero(3, 5)) print('=' * 40, '\n', '\n矩阵基本运算\n矩阵点乘\n', '=' * 30) vec = Vector([4, 5]) matrix3 = Matrix([[1, 2], [3, 4]]) matrix4 = Matrix([[5, 6], [7, 8]]) print('matrix.dot(vec) = %s' % matrix.dot(vec)) print('matrix3.dot(matrix4) = %s' % matrix3.dot(matrix4)) print('matrix4.dot(matrix3) = %s' % matrix4.dot(matrix3)) print('matrix.dot(Matrix.zero(2, 4)) = %s' % matrix.dot(Matrix.zero(2, 4))) print('Matrix.zero(4, 3).dot(matrix) = %s' % Matrix.zero(4, 3).dot(matrix)) print('=' * 40, '\n', '\n矩阵基本运算\n矩阵转置\n', '=' * 30) print('matrix => %s\nmatrix.T()=> %s' % (matrix, matrix.T())) I2 = Matrix.identity(2) I3 = Matrix.identity(3) print('=' * 40, '\n', '\n矩阵基本运算\n单位矩阵\n', '=' * 30) print('单位矩阵 I2 = %s\n单位矩阵 I3 = %s' % (I2, I3)) print('matrix.dot(I2) = %s' % matrix.dot(I2)) print('I3.dot(matrix) = %s' % I3.dot(matrix))