Здесь есть две ошибки.
Вы пропустили фактор & pi; при переводе из радианов в градусы (это & times; 180 / & pi;)
Вы должны быть осторожны с признаками векторов, поскольку они являются направленными отрезками.
Если я сделаю эти изменения, я получу результат, который имеет смысл:
import numpy as np
points = np.array([[343.8998, 168.1526], [351.2377, 173.7503], [353.531, 182.72]])
A = points[2] - points[0]
B = points[1] - points[0]
C = points[2] - points[1]
angles = []
for e1, e2 in ((A, B), (A, C), (B, -C)):
num = np.dot(e1, e2)
denom = np.linalg.norm(e1) * np.linalg.norm(e2)
angles.append(np.arccos(num/denom) * 180 / np.pi)
print angles
print sum(angles)
который печатает
[19.191300537488704, 19.12889310421054, 141.67980635830079]
180.0
Я бы, вероятно, сделал вещи более симметричными и использовал бы векторы A, B, C, которые являются циклическими и суммируют до нуля:
import numpy as np
points = np.array([[343.8998, 168.1526], [351.2377, 173.7503], [353.531, 182.72]])
A = points[1] - points[0]
B = points[2] - points[1]
C = points[0] - points[2]
angles = []
for e1, e2 in ((A, -B), (B, -C), (C, -A)):
num = np.dot(e1, e2)
denom = np.linalg.norm(e1) * np.linalg.norm(e2)
angles.append(np.arccos(num/denom) * 180 / np.pi)
print angles
print sum(angles)
который печатает
[141.67980635830079, 19.12889310421054, 19.191300537488704]
180.0
Знаки минус в точечном произведении появляются потому, что мы пытаемся получить внутренние углы.
Извините, мы отогнали вас в трудную минуту, закрыв вопрос.