三角函数.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]的范围,超出了这个范围就会报错。
-注意最后的三个双曲函数,以及各自的函数定义,这三个函数在一般日常生活中很难遇到。