3D球面坐标的计算 原创
2017-05-16 14:11
在3D射击游戏中,经常会有这样的情况,有一架敌人的飞机在我们上空飞行,我们陆地炮塔需要自动转动炮管,瞄准敌机开炮,这就需要计算3D空间的坐标,这涉及到两个角,一个叫做偏转角,一个叫做仰角,偏转角控制炮管水平转动,仰角控制炮管上下转动。那么,如果我们已知敌人与我们的直线距离,偏转角和仰角,如何计算出敌人的具体坐标?其实就是要求出下图中E点坐在的坐标。
上图中,我们已知的是:红色直线r的长度,红色的θ角,和蓝色的φ角,现在要求E点的坐标。
根据三角函数的比列关系我们求得:
E点的x,y,z分别为:
X = r*sinθ*sinφ
Y = r*cosθ
Z = r*sinθ*cosφ
这样就可以求出来敌机的具体坐标,其实在做RPG游戏时,我们经常会通过鼠标控制摄像机以主角为中心转动方向,比如魔兽世界中摄像机就会一直跟着英雄走,偶尔我们也会转动摄像机去看看英雄的侧面和前面,这些都是以英雄为中心的摄像机运动。我们要计算出摄像机绕着英雄偏转角和仰角分别旋转了多少度,此时摄像机应该放在哪个位置。这节课就讲这么多,如果想知道上面公式具体的推导过程和原理,可以看我的游戏开发之3D数学视频,因为视频比文字能够表达更清楚,谢谢大家捧场。
欢迎关注游戏开发者微信公众号
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明,否则将追究法律责任。https://m.blog.kokojia.com/game/b-55.html
阅读 18495 / 评论 0
- 上一篇: 什么是3D中的顶点缓冲与索引缓冲
- 下一篇: 面法线与顶点法线