<p>这里有两个错误。</p>
<ul>
<li><p>当从弧度转换为度时,你错过了π的因子(它是×180/π)</p></li>
<li><p>你必须小心向量的符号,因为它们是有向线段。</p></li>
</ul>
<p>如果我做了这些修改,我会得到一个有意义的结果:</p>
<pre><code>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)
</code></pre>
<p>打印出来的</p>
<pre><code>[19.191300537488704, 19.12889310421054, 141.67980635830079]
180.0
</code></pre>
<p>我可能会使事情更对称,使用循环的和为零的A,B,C向量:</p>
<pre><code>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)
</code></pre>
<p>打印出来的</p>
<pre><code>[141.67980635830079, 19.12889310421054, 19.191300537488704]
180.0
</code></pre>
<p>点积中的负号是因为我们试图得到内角。</p>
<p>很抱歉我们在你需要的时候把你赶走了,结束了这个问题。</p>