从今天起,开始接触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参考手册

Chapter 18_0 数学库的更多相关文章

  1. 微软数学库XNAMATH(DirectXMath)

    这篇文章只是对着MSDN文档的一些吐槽和总结记录,个人笔记之类的 运行库与头文件 老实说,这个数学库微软还是更像蛮频繁的,我这里有的最早版本是伴随DX9的,在这个头文件里面 最近在使用DXUT,顺便也 ...

  2. 一个很cool的C#的高性能数学库

    High Performance Math Library for C# and .NET是一个很cool的C#的高性能数学库,3D效果也很不错,下图是首页上的一个例子.他也有一个交互的网页,你可以自 ...

  3. DX11 Without DirectX SDK--06 DirectXMath数学库

    回到 DirectX11--使用Windows SDK来进行开发 xnamath.h原本是位于DirectX SDK的一个数学库,但是现在Windows SDK包含的数学库已经抛弃掉原来的xnamat ...

  4. DirectX11 With Windows SDK--06 DirectXMath数学库

    前言 xnamath.h原本是位于DirectX SDK的一个数学库,但是现在Windows SDK包含的数学库已经抛弃掉原来的xnamath.h,并演变成了现在的DirectXMath.h.其实本质 ...

  5. 几个经典的数学库之一学习---VCGlib(2)

    几个经典的数学库之一学习---VCGlib(2) 1. Optional Component(可选的组件) 有许多Vertex和Face的属性并不是一直都是必要的,如Face-Face的邻接关系.VC ...

  6. <泛> C++3D数学库设计详解 向量篇

    // 注:本内容为作者原创,禁止在其他网站复述内容以及用于商业盈利,如需引用,请标明出处:http://www.cnblogs.com/lv_anchoret/ Preface 为了支持光线追踪的学习 ...

  7. lua中的数学库

    Lua5.1中数学库的所有函数如下表: 使用数学库,不需要require,直接math.function就可以math.pi 为圆周率常量 = 3.14159265358979323846 abs 取 ...

  8. XNA数学库

    XNA Math Vectors 在direct3D 9 和10中,包含3D数学库的D3DX库支持向量和其他核心类型的计算.在direct11中,D3DX库不在包含3D数学库,取而代之的是XNA数学库 ...

  9. Lua_第17 章 数学库

    第17 章 数学库 在这一章中(以下关于标准库的几章中相同)我的主要目的不是对每个函数给出完整地说明,而是告诉你标准库可以提供什么功能.为了可以清楚地说明问题,我可能 会忽略一些小的选项或者行为.基本 ...

随机推荐

  1. jquery选择器之基本过滤选择器

    <style type="text/css"> /*高亮显示*/ .highlight{ background-color: gray } </style> ...

  2. HDOJ 4607 - Park Visit

    用树形DP找到这颗树距离最远的两个点....对于一个询问K..若小于最远距离..显然只要走最远的这条边走K-1个边就行了.. 当K大于了最远距离..就要去走其他的点...而去其他点必须再回到这个主线. ...

  3. VB的写法,关于版本写入注册表

    VB的写法,关于版本写入注册表   '软件都有一个关于我们的菜单,单单实现这个功能并不难,困难的是能够将这些信息写入注册表中,这样每次只要弹出这样的窗口,就从注册表里去搜索.这样是不是极大的节省了资源 ...

  4. CYQ.Data 支持WPF相关的数据控件绑定.Net获取iis版本

    CYQ.Data 支持WPF相关的数据控件绑定(2013-08-09) 事件的结果 经过多天的思考及忙碌的开发及测试,CYQ.Data 终于在UI上全面支持WPF,至此,CYQ.Data 已经可以方便 ...

  5. WCF小实例以及三种宿主

    WCF小实例以及三种宿主 最近一直在学习WCF相关知识,下面将通过一个小实例对所学的知识进行简单的回顾:本实例是一个简单三层操作数据库,并且也简单实现的三种宿主(控制台宿主,IIS宿主以及Window ...

  6. 性能测试工具比较:LoadRunner vs JMeter - 测试结果数据比较

    对web请求(HTTP/HTML)进行性能测试,确认请求响应时间.分别使用Loadrunner和JMeter进行测试,比较测试结果. 1.LoadRunner测试web请求响应时间 1.1  编制(录 ...

  7. 函数模板的trick

    函数模板的trick 让gcc支持成员函数模板的trick 罗朝辉 (http://www.cnblogs.com/kesalin/) 本文遵循“署名-非商业用途-保持一致”创作公用协议   gcc ...

  8. CKEditor 自主控制图片上传

    在ASP.NET中使用CKEditor编辑器,如果想控制图片上传,即把上传的图片路径名存到数据中,可以自定义一个上传功能 首先自定义CKEditor的配置文件 在config.js中添加以下代码,红色 ...

  9. 你可能把A/B测试做错了

    大卫奥格威说过,"永远不要停止试验,你的广告也就永远不会停止改进". 在当今的网络世界中,类似于吆喝科技 AppAdhoc A/B Testing 这样的工具越来越多,AB测试和转 ...

  10. Dockerfile与Docker构建流程解读

    摘要 本文主要讨论了对docker build的源码流程进行了梳理和解读,并分享了在制作Dockerfile过程中的一些实践经验,包括如何调试.优化和build中的一些要点.另外,还针对现有Docke ...