|
我在做游戏时遇到一个急手的智能问题
圆上有两个点,分别是a 当前点,oa目标点,我准备在圆上作旋转,就是a点向oa点旋转,使之重合。是用顺时针还是逆时针旋转划得来呢,是我最头痛的问题,因为考虑的因素很多,特别是0和360度的过度,许多时候都不竟人意。
以下是我写的C程序,希望各位大哥给我一个解决问题的方法,谢谢!!!
===============================================================
代码段(有时候失败)
/* 确定旋转角度 方向 */
if( oa-a <= 180 )
{
if( oa-a >0 ) PLAYER[n].turn_right=1; /*顺时针旋转*/
else PLAYER[n].turn_left=1;/*逆时针旋转*/
}
else if( oa-a > 180 )
{
if( oa-a >0 ) PLAYER[n].turn_right=1;/*顺时针旋转*/
else PLAYER[n].turn_left=1;/*逆时针旋转*/
}
===============================================================
int ask_round(int a,int oa)
{
想写一个这样的函数 变量SZ顺时针旋转的距离(距离也就是要转的角度的多少) NZ逆时针旋转的距离,比较谁用的角度少就用谁,return(1) 用顺时针 return(2)用逆时针。
}
就是很难解决,想了好久了,都没有满意的答案,郁闷啊~~~~希望各位大哥帮忙写一个这样的判断函数了,不胜感激!!
如果用纯角度的计算方法,该怎么做,给个提示吧,哈哈~~~~~~
这是图解,我的角度坐标系 a 当前点,oa目标点 和各种角度情况
[em10] [em10] [em10] |
|