程序中计算直线与x轴的角度 (Math.atan与Math.atan2)

游戏中通常需要知道两点连线的角度:比如野怪逃跑时,不能冲着玩家方向逃跑,所以需要知道野怪与玩家的角度以及野怪与逃跑位置的角度。

求角度要用反正切函数,但是会发现有atan()atan2()两个。该如何选择呢?
其实可以想想,atan()有什么缺陷,需要再出个atan2()来解决?


反三角函数表
在这里插入图片描述
atan()参数是一个正切值(直线的斜率),返回弧度值,但是由于正切的周期性,atan()的值域是从(-PI/2~PI/2),也就是它只处理一四象限,本可以有两个角度的但它却只返回一个(比如atan(1)可以是45°也可以是225°,但是只会返回45°),所以一般不用它。

  • 正切的周期性:对于正切函数来说,他的周期是180°,所以两个相差180°的角具有相同的正切和斜率。还记得高中时候的诱导公式吗:tan(π+α)=tanα

atan2(double y,double x) 参数有两个,分别代表点的y坐标(对边边长)和x坐标(邻边边长),返回值是原点与此点的连线与x轴正方向夹角的弧度值,这样它就可以处理四个象限的任意情况了,值域相应的是(-PI~PI)
在这里插入图片描述

将得到的弧度值r换算为角度,公式:角度 = (r*180)/PI


简单概括
r = atan(y/x)求出的r取值范围是(-PI/2, PI/2)
r = atan2(y, x)求出的r取值范围是(-PI, PI)


(待思考:为什么没有asin2和acos2 ?)

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值