from math import acos, hypot, pi
def angle(l):
if len(l) < 3:
return []
res = []
(ax, ay), (bx, by), *l = l
abx, aby = bx - ax, by - ay
len_ab = hypot(abx, aby)
for cx, cy in l:
bcx, bcy = cx - bx, cy - by
len_bc = hypot(bcx, bcy)
res.append(round(acos((abx * bcx + aby * bcy) /
(len_ab * len_bc)) * 180 / pi))
ax, ay, bx, by, abx, aby, len_ab = \
bx, by, cx, cy, bcx, bcy, len_bc
return res
# квадрат
aa = angle([(0, 0), (1, 0), (1, 1), (0, 1), (0, 0), (1, 0)])
print(sum(aa), aa)
# кривой "квадрат"
aa = angle([(0, 0), (11, 0), (12, 9), (1, 11), (2, -1), (9, 0)])
print(sum(aa), aa)
...комплексная архитектура крупных проектов,...