擅长:python、mysql、java
<p>有一个三角解可以避免包装问题。</p>
<p>我假设字符<code>P1</code>和<code>P2</code>都有(x,y)坐标。你已经指定了你知道这两个之间的距离,你大概是用毕达哥拉斯定理计算出来的。</p>
<p>可以使用两个向量的点积来计算它们之间的角度:</p>
<pre><code>A . B = |A| . |B| . cos(theta).
</code></pre>
<p>如果你把<code>A</code>作为<code>facingAngle</code>向量,它将是<code>[cos(fA), sin(fA)]</code>,其大小为<code>|A|</code>1。</p>
<p>如果将<code>B</code>作为两个字符之间的向量,并且您的上面距离得到:</p>
<pre><code>cos(theta) = (cos(fA) * (P2x - P1x) + sin(fA) * (P2y - P1y)) / |B|
</code></pre>
<p>其中<code>|B|</code>是您已经计算的距离。</p>
<p>您不需要实际使用反余弦来查找<code>theta</code>,因为对于-45到+45的范围,您只需要检查<code>cos(theta) >= 0.70710678</code>(即<code>1 / sqrt(2)</code>)。</p>
<p>这看起来可能有点复杂,但很可能你已经在程序中找到了所有需要的变量。</p>