我想知道一种在水平轴上翻转角度的方法,而不必做很多操作.假设我的角度为0(在我的代码的坐标系中"向右"),翻转的角度应为180(指向左侧).如果90(向上),翻转它应该仍然是90. 89是91,依此类推.我可以根据角度暗示的X/Y速度进行操作,但这会减慢速度,我觉得这不是正确的方法.我不太了解数学,所以我可能会用错误的名字来称呼...有人可以帮忙吗?
编辑:对不起,我花了很长时间,我不得不长时间离开电脑,好吧...... http://img215.imageshack.us/img215/8095/screenshot031v.jpg
这个截图可能会这样做.上面的结构是两个卫星和一个与中心白点相连的光束.这两颗卫星应该继承白点的角度(它可以用于调试目的),所以如果它的目标是一个角度,它们就会跟随.左边的卫星是镜像的,所以我按照建议的180角计算它,虽然这也是我的第一次尝试.正如您所看到的那样,它不是镜像的,而是翻转的.当白点旋转时,它会向后旋转.另一个没问题.
这是与其他东西相关的东西的角度重新计算,pid将是父节点,而id是当前节点.pin.ang是当对象链接到另一个时复制的角度偏移,因此它在旋转时保持位置:
if(object[id].mirror)
object[id].angle = 180 - (object[id].pin.ang + object[pid].angle);
else
object[id].angle = object[id].pin.ang + object[pid].angle;
Run Code Online (Sandbox Code Playgroud)
这是具体的旋转部分.OpenGL的.offx/y用于偏离中心旋转的东西,就像即将出现的光束一样,它使其他一切正确.
glTranslatef(list[index[i]].x, list[index[i]].y, 0);
glRotatef(list[index[i]].angle, 0.0, 0.0, 1.0);
glTranslatef(list[index[i]].offx, -list[index[i]].offy, 0);
Run Code Online (Sandbox Code Playgroud)
当旋转速度时,旋转速度似乎也会错过(每次重绘时加上一个整数到当前角度,顺时针旋转为正,如下一个:http: //img216.imageshack.us/img216/7/screenshot032ulr.jpg
所以它绝对不是180度角,尽管它有多么明显.仅通过反转纹理坐标来完成镜像,因此它不会影响角度.我担心这可能是GL轮换的一个怪癖.
but*_*ken 10
反映的数量(只是看数学)将是 (180 - angle)
Angle | Reflection
------+-----------
0 | 180
90 | 90
89 | 91
91 | 89
360 | -180
270 | -90
Run Code Online (Sandbox Code Playgroud)
如果你低于"水平面",请注意底片 - 你可以保持原样,或作为特殊情况处理.
归档时间: |
|
查看次数: |
11913 次 |
最近记录: |