• Chapter 18_0 数学库


      从今天起,开始接触Lua的标准库(数学库、table库、字符库、I/O库、操作系统库、调试库)。

    一路走来,从最基本的变量、函数、迭代器、协同程序到稍微复杂的元表、元方法、环境、模块,以及最后被整蒙了的对象编程、继承、类、弱引用table、垃圾回收终结器。只要坚持下去,会慢慢吃透的!

      首先从介绍数学库开始。

      数学库这一章讲的不多,更多详细介绍参考Lua手册

      math(数学)库由一组标准的数学函数构成,三角函数、指数、对数函数、取整函数、生成伪随机数的函数、以及变量pi和huge等等。

      所有的三角函数都使用弧度单位,可以使用函数deg和rad来转换角度和弧度。

      比如要使用角度单位:可以重定义三角函数:

    do 
        local sin , asin ,... = math.sin , math.asin, ...
        local deg , rad = math.deg , math.rad
        math.sin = function(x) return sin(rad(x)) end
        math.asin = function(x) return deg(asin(x)) end
        ...
    end

      函数math.random用于生产伪随机数,可以用3种方法调用它。

    1》如果不提供任何参数,它将返回一个在区间[0,1)内均匀分布的随机数。

    2》如果有一个整数参数n,它将返回一个在区间[1,n]内的随机数

    3》提供两个整数m , n,它将返回一个在区间[m,n]内的随机数

      函数randomseed用于设置随机数生成器的种子数,通常用系统当前时间去初始化这个种子参数:

    math.randomseed(os.time())

      math.random函数使用了C标准库的rand函数,在某些C标准库的实现中,该函数所产生的数字并不具备统计意义上的均匀分布特性。

      所有的math函数都放在math表中,对于有“integer/float”注释的函数,会对整数返回整数结果,对浮点参数返回浮点结果。

    • math.abs(x) 返回x的绝对值。 (integer/float)     
    • math.acos(x) 返回x的余弦值。
    • math.asin(x) 返回x的正弦值。 
    • math.atan(y [,x])  返回y/x的正切值,它会使用两个参数的符合来找到结果落在哪个象限中。默认x是1,atan(y)返回y的反正切值。
    • math.ceil(x) 返回不小于x的最小整数值。
    • math.cos(x) 返回x的余弦值。(参数是弧度)
    • math.deg(x) 将弧度x转换为角度。
    • math.exp(x) 返回e^x的值(e为自然对数的底)
    • math.floor(x) 返回不大于x的最大整数值。
    • math.fmod(x) 返回x/y,将商向零圆整后的余数。(integer/float)
    • math.huge 浮点数HUGE_VAL,这个数比任何数字都大。
    • math.max(x,...) 返回参数中的最大的值。(integer/float)
    • math.maxinteger 最大值的整数。
    • math.min(x,...) 返回参数中最小的值。(integer/float)
    • math.mininteger 最小值的整数
    • math.modf(x) 返回x的整数部分和小数部分,第二个结果一定是浮点数。
    • math.pi  pi的值
    • math.rad(x) 将角x从角度转换为弧度
    • math.randomseed(x) 把x设为随机数生成器的“种子”,相同的种子产生相同的随机数列。
    • math.sin(x) 返回x的正弦值。(参数是弧度)
    • math.sqrt(x) 返回x的平方根。
    • math.tan(x) 返回x的正切值。(参数是弧度)
    • math.tointeger(x) 如果x可以转换为一个整数,返回该整数,否则返回nil。
    • math.type(x) 如果x是整数,返回“integer",如果它是浮点数,返回"float",如果x不是数字,返回nil。
    • math.ult(m,n) 如果m和n以无符号整数形式比较,m在n之下,返回布尔真,否则返回假。

    以上内容来自:《Lua程序设计第二版》和《Programming in Lua  third edition 》Lua参考手册

  • 相关阅读:
    Svn如何使用,有什么作用?
    Unity脚本基础Day02
    unity设计模式-----责任链模式
    LitJson ---json的创建和解析
    Mesh编程——三角形,多边形,正方体,园形,圆环
    unity基础逻辑题
    unity——UI拖拽实现拼图
    unity:倒计时
    UGUI Toggle的监听事件绑定
    UnityGUI系统之InputField
  • 原文地址:https://www.cnblogs.com/daiker/p/5888079.html
Copyright © 2020-2023  润新知