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()
Exemple #2
0
    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))