我试图从另一个向量中找到最接近所提供角度的集合中的 2D 向量。
因此,如果我有v(10, 10)
并且我想找到沿 90 度角的最接近的其他矢量v(20, 10)
,例如,它应该找到 。我写了一个我认为返回两个向量之间正确方位的方法。
float getBearing(
const sf::Vector2f& a, const sf::Vector2f& b)
{
float degs = atan2f(b.y - a.y, b.x - a.x) * (180 / M_PI);
return (degs > 0.0f ? degs : (360.0f + degs)) + 90.0f;
}
这似乎可以正常工作,尽管如果我将一个放在另一个之上,它会返回 180,这很好,而 360,这很奇怪。如果它在它的正上方,它不应该返回 0 吗?最好的方法是检查 360 并返回 0 我猜。
我的问题是我无法计算出通过的角度(例如 90 度)和从getBearing
. 我什至不确定退回的轴承是否在所有情况下都是正确的。
任何人都可以帮助纠正我的轴承方法中任何明显的错误,并提出一种方法来区分两个轴承吗?我一直在网上寻找,但是有很多方法可以做到,其中大部分都以其他语言显示。
谢谢。