我试图弄清楚角度是否位于其他两个角度之间.我一直在尝试创建一个简单的函数来执行此操作,但我的技术都不适用于所有可能的角度值.
你能帮我编辑一下我的功能,以正确判断角度是否位于其他2个角度之间?

在上图中; 我使用绿点作为中心点,然后确定每条线与绿点的角度.然后我计算黑点到绿点的角度.我想检查黑点的角度之间的2线的角度.
注意:在我的情况下; 据说角度(targetAngle)位于2个其他角度之间,如果2个角度之间的差<180度并且目标角度位于由这2个角度构成的空腔中.
下面的代码应该可以工作,但是对于这些代码失败(它们位于角度之间):
- is_angle_between(
150,190,110 )- is_angle_between(3,41,345)
bool is_angle_between(int target, int angle1, int angle2)
{
int rAngle1 = ((iTarget - iAngle1) % 360 + 360) % 360;
int rAngle2 = ((iAngle2 - iAngle1) % 360 + 360) % 360;
return (0 <= rAngle1 && rAngle1 <= rAngle2);
}
// Example usage
is_angle_between(3, 41, 345);
Run Code Online (Sandbox Code Playgroud)
我尝试的另一种技术也不起作用:
int is_angle_between(int target, int angle1, int angle2)
{
int dif1 = angle1-angle2;
int dif2 = angle2-angle1;
int uDif1 …Run Code Online (Sandbox Code Playgroud) 我还没有标记这个问题.
由于Bounty Time-Limit,当前接受的答案被自动接受
参考我目前正在构建的这个编程游戏.
从上面的链接可以看出,我目前正在构建一个游戏,用户可编程机器人在竞技场中自主战斗.
现在,我需要一种方法来检测机器人是否在特定角度检测到另一个机器人(取决于炮塔可能面对的位置):
替代文字http://img21.imageshack.us/img21/7839/robotdetectionrg5.jpg
从上图中可以看出,我已经绘制了一种坦克的视角,我现在需要在游戏中模拟,以检查其中的每个点以查看是否有其他机器人在视野中.
机器人只是在战斗竞技场(另一个画布)上不断翻译的画布.
我知道炮塔的标题(它将面向当前的方式),并且我需要找到它的路径中是否有任何机器人(并且路径应该以'视点'的方式定义,如图所示)上面的图像以红色"三角形"的形式出现.我希望图像能让我的信息更加清晰.
我希望有人可以指导我实现这个问题所涉及的数学.
[UPDATE]
我已经尝试过你告诉我的计算,但它没有正常工作,因为从图像中可以看出,bot1应该无法看到Bot2.这是一个例子:
替代文字http://img12.imageshack.us/img12/7416/examplebattle2.png
在上面的场景中,Bot 1正在检查他是否可以看到Bot 2.以下是详细信息(根据Waylon Flinn的回答):
angleOfSight = 0.69813170079773179 //in radians (40 degrees)
orientation = 3.3 //Bot1's current heading (191 degrees)
x1 = 518 //Bot1's Center X
y1 = 277 //Bot1's Center Y
x2 = 276 //Bot2's Center X
y2 = 308 //Bot2's Center Y
cx = x2 - x1 = 276 - 518 = -242
cy = y2 - y1 = 308 - …Run Code Online (Sandbox Code Playgroud)