L1[math]01. 取绝对值
L1[math]02. 三角函数
小知识:注意 lua下三角函数用的参数是弧度 而不是角度
弧度=角度*pi/180 -->弧度角度换算公式 lua的math库里面也有 弧度和角度转换的2个函数 也可以直接使用
我们要求30度的sin值 那么
print(math.sin(30*math.pi/180))
小知识:知道半径和圆心 如何遍历出圆上的所有点 对于常见的鼠标轨迹 还是有点用处的
圆心坐标(x0,y0) 半径为r
角度为a
圆上任意一点坐标公式
x1=x0+r*cos(a)
y1=y0+r*sin(a)
lua下的取圆上坐标的源码
--圆心坐标x0=100 y0=100--半径r=50--圆上点初始坐标x1=0y1=0--10度一个间隔输出圆上坐标for a=0,360,10 do x1=x0+r*math.cos(a*math.pi/180) y1=y0+r*math.sin(a*math.pi/180) print(a .."°",x1,y1)end
123
L1[math]03. 取整数
10 //4 =2
L1[math]04. 取余数
print(math.fmod(12,4))
补充知识:以前的table.pack 和table.unpack的用法
table.pack 把参数里面的内容变成1个数字索引表
table.unpack 把参数表的元素一个个返回 相当于return list[i], list[i+1], ···, list[j]
常见用途就是用在了函数的参数 功能和 …类似
小知识:转化为整数 类似按键的isnumeric()函数 检测是否是整数 只要不能转换为整数的返回nil 但是这个是5.3独有的函数
print(math.tointeger("12"))--12
print(math.tointeger(14))—14自己写了一个判断是否是数值(不是整数)函数
function isnumeric(x) local temp=tonumber(x) local result --print(temp) if (temp) then result=true else result=false end return resultendprint(isnumeric(12))print(isnumeric("12fsdf"))print(isnumeric("as12fsdf"))print(isnumeric("12"))
判断是否是整数的小函数
function isint(x) local temp=tonumber(x) local result --print(temp) if (temp) then --这里判断是数值了 进一步判断是否是整数 --print(tostring(temp),tostring(math.floor(temp))) if (tostring(temp)==tostring(math.floor(temp))) then result=true else result=false end else result=false end return resultendprint(isint("12"))print(isint("12.54"))print(isint(12))print(isint("fds"))
123
L1[math]05. 取随机数
小知识:伪随机的基本原理
种子设置的参数为准 将这个参数带入到math.random()以固定的公式来获取随后的随机数
如果种子设置的参数都是3 那么后面得出的随机数都是一样的
x=3math.randomseed(x)for i=1,5 do print(math.random(-50,50))end
-28-22-22-2922程序于 0.19 秒完成 (pid: 5728).
我们再次运行一次结果依然
-28-22-22-2922程序于 0.19 秒完成 (pid: 2740).
结论:为了避免这种伪随机的情况 随机数种子函数的参数必须保持不断的变化
解决办法就是 math.randomseed(os.time()) 当然这种也是有漏洞的 不过大部分时候都管用
经过测试 每个源码 只需要再开头设置下随机数种子就够了
123