三角函數(shù).png
前言#
截止到上一章我們介紹完了幾乎所有的IO
庫(kù)中的函數(shù),接下來(lái)我們要進(jìn)軍數(shù)學(xué)庫(kù)中的函數(shù)了,所有的數(shù)學(xué)函數(shù)都保存在math
表中负蚊,Lua中能用到的數(shù)學(xué)函數(shù)都在這個(gè)表中神妹,其實(shí)也就是一些常用了,本來(lái)我打算寫一篇把所有的數(shù)學(xué)函數(shù)都列舉家妆,不過(guò)在我仔細(xì)看過(guò)以后發(fā)現(xiàn)還是太多了鸵荠,所以我打算按照我自己的方式來(lái)進(jìn)行一下分類,那么這一章我們就來(lái)總結(jié)一下關(guān)于角度的數(shù)學(xué)函數(shù)伤极。
內(nèi)容#
math.pi##
- 原型:math.pi
- 解釋:返回角度為180度時(shí)對(duì)應(yīng)的弧度值蛹找,也就是圓周率π的值。
math.deg()##
- 原型:math.deg(x)
- 解釋:返回一個(gè)弧度數(shù)
x
的對(duì)應(yīng)的角度值哨坪。
math.rad()##
- 原型:math.rad(x)
- 解釋:返回一個(gè)角度數(shù)
x
的對(duì)應(yīng)的弧度值庸疾。
math.sin()##
- 原型:math.sin(x)
- 解釋:返回一個(gè)數(shù)
x
的對(duì)應(yīng)的正弦值,x
的角度是弧度当编。
math.cos()##
- 原型:math.cos(x)
- 解釋:返回一個(gè)數(shù)
x
的對(duì)應(yīng)的余弦值届慈,x
的角度是弧度。
math.tan()##
- 原型:math.tan(x)
- 解釋:返回一個(gè)數(shù)
x
的對(duì)應(yīng)的正切值忿偷,x
的角度是弧度金顿。
math.asin()##
- 原型:math.asin(x)
- 解釋:返回一個(gè)數(shù)
x
的反余弦值,返回值的單位是弧度鲤桥。
math.acos()##
- 原型:math.acos(x)
- 解釋:返回一個(gè)數(shù)
x
的反余弦值揍拆,返回值的單位是弧度。
math.atan()##
- 原型:math.atan(x)
- 解釋:返回一個(gè)數(shù)
x
的反正切值茶凳,返回值的單位是弧度嫂拴。
math.atan2()##
- 原型:math.atan2(x, y)
- 解釋:返回點(diǎn)(x,y)和原點(diǎn)(0,0)之間直線的傾斜角的反正切值,返回值的單位是弧度慧妄。
math.sinh()##
- 原型:math.sinh(x)
- 解釋:返回一個(gè)數(shù)
x
的對(duì)應(yīng)的雙曲正弦值顷牌,x
的取值范圍是所有數(shù)值剪芍,在x=0時(shí)取得最小值塞淹。
math.cosh()##
- 原型:math.cosh(x)
- 解釋:返回一個(gè)數(shù)
x
的對(duì)應(yīng)的雙曲余弦值,x
的取值范圍是所有數(shù)值罪裹。
math.tanh()##
- 原型:math.tanh(x)
- 解釋:返回一個(gè)數(shù)
x
的對(duì)應(yīng)的雙曲正切值饱普,x
的取值范圍是所有數(shù)值。
Usage##
首先我們新建一個(gè)文件然后將文件重命名為anglefunctest.lua編寫如下代碼:
-- 圓周率π的值
print("\nmath.pi = "..math.pi)
-- 弧度轉(zhuǎn)角度函數(shù)
print("\nmath.pi = "..math.deg(math.pi).." degrees")
print("math.pi / 2 = "..math.deg(math.pi / 2).." degrees")
-- 正弦函數(shù)
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)")
-- 余弦函數(shù)
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)")
-- 正切函數(shù)
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)")
-- 反正弦函數(shù)
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)))
-- 反余弦函數(shù)
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)))
-- 反正切函數(shù)
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)))
-- 反正切函數(shù)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)))
-- 雙曲正弦函數(shù)
x = 0
print("\nmath.sinh("..x..") = "..math.sinh(x))
x = 10
print("math.sinh("..x..") = "..math.sinh(x))
-- 雙曲余弦函數(shù)
x = 0
print("\nmath.cosh("..x..") = "..math.cosh(x))
x = 10
print("math.cosh("..x..") = "..math.cosh(x))
-- 雙曲正切函數(shù)
x = 0
print("\nmath.tanh("..x..") = "..math.tanh(x))
x = 10
print("math.tanh("..x..") = "..math.tanh(x))
- 運(yùn)行結(jié)果
math_angle.png
W垂玻總結(jié)#
- 使用這些函數(shù)之前一定要注意參數(shù)或者返回值的單位套耕,一般情況下都是弧度。
- 注意一些函數(shù)的定義域峡继,比如反余弦函數(shù)
math.acos()
的參數(shù)只能是[-1,1]的范圍冯袍,超出了這個(gè)范圍就會(huì)報(bào)錯(cuò)。
-注意最后的三個(gè)雙曲函數(shù),以及各自的函數(shù)定義康愤,這三個(gè)函數(shù)在一般日常生活中很難遇到儡循。