Lua math(一) angle

三角函数.png

前言#

截止到上一章我们介绍完了几乎所有的IO库中的函数,接下来我们要进军数学库中的函数了,所有的数学函数都保存在math表中,Lua中能用到的数学函数都在这个表中,其实也就是一些常用了,本来我打算写一篇把所有的数学函数都列举,不过在我仔细看过以后发现还是太多了,所以我打算按照我自己的方式来进行一下分类,那么这一章我们就来总结一下关于角度的数学函数。

内容#


math.pi##

  • 原型:math.pi
  • 解释:返回角度为180度时对应的弧度值,也就是圆周率π的值。

math.deg()##

  • 原型:math.deg(x)
  • 解释:返回一个弧度数x的对应的角度值。

math.rad()##

  • 原型:math.rad(x)
  • 解释:返回一个角度数x的对应的弧度值。

math.sin()##

  • 原型:math.sin(x)
  • 解释:返回一个数x的对应的正弦值,x的角度是弧度。

math.cos()##

  • 原型:math.cos(x)
  • 解释:返回一个数x的对应的余弦值,x的角度是弧度。

math.tan()##

  • 原型:math.tan(x)
  • 解释:返回一个数x的对应的正切值,x的角度是弧度。

math.asin()##

  • 原型:math.asin(x)
  • 解释:返回一个数x的反余弦值,返回值的单位是弧度。

math.acos()##

  • 原型:math.acos(x)
  • 解释:返回一个数x的反余弦值,返回值的单位是弧度。

math.atan()##

  • 原型:math.atan(x)
  • 解释:返回一个数x的反正切值,返回值的单位是弧度。

math.atan2()##

  • 原型:math.atan2(x, y)
  • 解释:返回点(x,y)和原点(0,0)之间直线的倾斜角的反正切值,返回值的单位是弧度。

math.sinh()##

  • 原型:math.sinh(x)
  • 解释:返回一个数x的对应的双曲正弦值,x的取值范围是所有数值,在x=0时取得最小值。

math.cosh()##

  • 原型:math.cosh(x)
  • 解释:返回一个数x的对应的双曲余弦值,x的取值范围是所有数值。

math.tanh()##

  • 原型:math.tanh(x)
  • 解释:返回一个数x的对应的双曲正切值,x的取值范围是所有数值。

Usage##

首先我们新建一个文件然后将文件重命名为anglefunctest.lua编写如下代码:

-- 圆周率π的值
print("\nmath.pi = "..math.pi)

-- 弧度转角度函数
print("\nmath.pi = "..math.deg(math.pi).." degrees")
print("math.pi / 2 = "..math.deg(math.pi / 2).." degrees")


-- 正弦函数
x = 1
print("\nmath.sin("..x..") = "..math.sin(x).." = sin("..math.deg(x).." degrees)")

x = 3.14 / 6
print("math.sin("..x..") = "..math.sin(x).." = sin("..math.deg(x).." degrees)")

-- 余弦函数
x = 1
print("\nmath.cos("..x..") = "..math.cos(x).." = cos("..math.deg(x).." degrees)")

x = 3.14 / 6
print("math.cos("..x..") = "..math.cos(x).." = cos("..math.deg(x).." degrees)")

-- 正切函数
x = 1
print("\nmath.tan("..x..") = "..math.tan(x).." = tan("..math.deg(x).." degrees)")

x = 3.14 / 6
print("math.tan("..x..") = "..math.tan(x).." = tan("..math.deg(x).." degrees)")


-- 反正弦函数
x = 1
print("\nmath.asin("..x..") = "..math.asin(x)..", deg(ret) = "..math.deg(math.acos(x)))

x = 1.732 / 2
print("math.asin("..x..") = "..math.asin(x)..", deg(ret) = "..math.deg(math.acos(x)))

-- 反余弦函数
local x = 0
print("\nmath.acos("..x..") = "..math.acos(x)..", deg(ret) = "..math.deg(math.acos(x)))

x = 1.414 / 2
print("math.acos("..x..") = "..math.acos(x)..", deg(ret) = "..math.deg(math.acos(x)))

-- 反正切函数
x = 1
print("\nmath.atan("..x..") = "..math.atan(x)..", deg(ret) = "..math.deg(math.atan(x)))

x = 10
print("math.atan("..x..") = "..math.atan(x)..", deg(ret) = "..math.deg(math.atan(x)))

-- 反正切函数2
x = 1
local y = 1
print("\nmath.atan2("..x..","..y..") = "..math.atan2(x, y)..", 
  deg(ret) = "..math.deg(math.atan2(x, y)))

x = 2
y = 4
print("math.atan2("..x..","..y..") = "..math.atan2(x, y)..", 
  deg(ret) = "..math.deg(math.atan2(x, y)))


-- 双曲正弦函数
x = 0
print("\nmath.sinh("..x..") = "..math.sinh(x))

x = 10
print("math.sinh("..x..") = "..math.sinh(x))

-- 双曲余弦函数
x = 0
print("\nmath.cosh("..x..") = "..math.cosh(x))

x = 10
print("math.cosh("..x..") = "..math.cosh(x))

-- 双曲正切函数
x = 0
print("\nmath.tanh("..x..") = "..math.tanh(x))

x = 10
print("math.tanh("..x..") = "..math.tanh(x))
  • 运行结果
math_angle.png

#总结#

  • 使用这些函数之前一定要注意参数或者返回值的单位,一般情况下都是弧度。
  • 注意一些函数的定义域,比如反余弦函数math.acos()的参数只能是[-1,1]的范围,超出了这个范围就会报错。
    -注意最后的三个双曲函数,以及各自的函数定义,这三个函数在一般日常生活中很难遇到。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容