Я бы использовал numpy
, так как он допускает гораздо более удобный массив - и в этом случае матричные вычисления.
import numpy as np
Сначала вы можете определить функцию вращения, которая принимает уголв градусах и возвращает соответствующую матрицу вращения:
def rot(phi):
phi = np.deg2rad(phi)
return np.array([[np.cos(phi), -np.sin(phi)], [np.sin(phi), np.cos(phi)]])
Затем вы можете добавить вращение к вашей функции, например:
def drawRect(x, y, w, h, angle):
a = np.array((-w / 2, -h / 2))
b = np.array((w / 2, -h / 2))
c = np.array((w / 2, h / 2))
d = np.array((-w / 2, h / 2))
if angle != 0:
a = np.matmul(rot(angle), a)
b = np.matmul(rot(angle), b)
c = np.matmul(rot(angle), c)
d = np.matmul(rot(angle), d)
a += [x, y]
b += [x, y]
c += [x, y]
d += [x, y]
line(a, b)
line(b, c)
line(c, d)
line(d, a)