Chapter 18_0 数学库

  从今天起,开始接触Lua的标准库。一路走来,从最基本的变量、函数、迭代器、协同程序到稍微复杂的元表、元方法、环境、模块,以及最后被整蒙了的对象编程、继承、类、弱引用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参考手册

时间: 2024-12-13 07:49:00

Chapter 18_0 数学库的相关文章

XNA数学库

XNA Math Vectors 在direct3D 9 和10中,包含3D数学库的D3DX库支持向量和其他核心类型的计算.在direct11中,D3DX库不在包含3D数学库,取而代之的是XNA数学库.XNA利用的是特殊的硬件寄存器.在windows环境中,XNA数学库使用SSE2(Streaming SIMD Extension 2)指令集.它使用128-bits大小的SIMD(single instruction multiple data)寄存器,可以用一个指令操作4个32-bits浮点型

Lua 笔记--数学库

一.数学库 --获取系统时间 print(os.time()) --调用math.sin函数 print(math.sin(30)) --[[将角度转换成弧度 math.deg(x) --将弧度转换成角度 math.rad(x) ]] --[[指数函数.对数函数 math.exp(x) math.log(x) ]] --取整函数 local n = 3.14 print(math.floor(n)) --向下取整 print(math.ceil(n)) --向上取整 --取最大值.最小值 pri

DirectX11 学习笔记6 - 使用D3DXMATH数学库的一个例子

这个例子是在之前的例子基础上 ,把之前d3dx10math数学库换成了最新的d3dxmath.优点就不说了.先上效果图 全部代码.以及效果文件 文件结构 全部代码: 按照上图的文件顺序 #pragma once #include <D3DX10math.h> #include <xnamath.h> class XCamera { public: XCamera() { m_positionX = 0.0f; m_positionY = 0.0f; m_positionZ = 0.

Lua_第17 章 数学库

第17 章 数学库 在这一章中(以下关于标准库的几章中相同)我的主要目的不是对每个函数给出完整地说明,而是告诉你标准库可以提供什么功能.为了可以清楚地说明问题,我可能 会忽略一些小的选项或者行为.基本的思想是激发你的好奇心,这些好奇之处可能在參考于冊中找到答案. 数学库由算术函数的标准集合组成.比方三角函数库(sin, cos, tan, asin, acos, etc.), 幂指函数(exp, log,  log10),舍入函数(floor,  ceil).max.min.加上一个变量 pi.

最强数学库GSL(GNU Scientific Library) Qt环境下部署

1.前言 GSL(GNU Scientific Library)是一个 C 写成的用于科学计算的库,有超过1000个函数,该库提供了关于数学计算的很多方面,Matlab的大部分函数几乎都能借助它实现,可以在数值计算中省却很多事情.关于GSL的详细功能.GSL的功能及相关头文件的介绍可以见此偏文章:http://blog.csdn.net/augusdi/article/details/8834182,或者看看这位仁兄的blog:http://www.cnblogs.com/Jedimaster/

libGdx #4 数学库(1) Vector2

Vector2,顾名思义就是二维向量. 预备知识:矢量 何为向量?最基本的来说,就是一组数.二维向量,就是两个数.两个数,可以表示一个点,也可以表示一条有向线段.为了区分,在这节课中,将数学意义上的有向线段称为"矢量",而将此处用来储存和计算数据的Vector2称为"向量" 将一个矢量的起点平移到原点,其终点的坐标(如例中A(61.27, 50.69))就代表了这一个矢量.同样,一个点可以表示为一段从原点指向这个点的矢量. 两个矢量的加法,直接将其平移至首尾相接,从

稀疏矩阵解题数学库 -- UMFPACK

UMFPACK就是求解类似于Ax=b这样问题的一个库,来自佛罗里达州立大学.可以直接到http://www.cise.ufl.edu/research/sparse/umfpack/去下载对应的包然后编译得到Windows下的lib,包含到自己的工程就可以了. 什么是UMFPACK UMFPACK是专门求解类似于Ax=b这样的稀疏矩阵方程的一个库,一般情况下A 是稀疏非对称的矩阵.它是基于非对称的多波前算法( Unsymmetric-pattern MultiFrontal method )对稀

Chapter 20_1 table库

table库是由一些辅助函数构成,把table作为数组来操作,所有的函数都忽略传入参数的那张表中的非数字键. 无论如何,若一个操作需要取表的长度,这个表必须是一个真序列,或是拥有__len元方法. 提供了这样一些功能:从列表中插入和删除元素.对元素排序.连接一个数组中所有字符串. 插入和删除 函数table.insert用于将一个元素插入到一个数组指定位置,然后移动后续元素. 例如数组t = {10,20,30},当调用table.insert(t,1,15)后,t = {15,10,20,30

&lt;泛&gt; C++3D数学库设计详解 简单光学几何 &amp;&amp; 随机向量生成

// 注:本内容为作者原创,禁止在其他网站复述内容以及用于商业盈利,如需引用,请标明出处:http://www.cnblogs.com/lv_anchoret/  Preface 当初写这个库,是为了支持光线追踪的学习,所以,学完第一本书,这时候,我们整合一些物理光学方面的运算,封装到我们的泛型库里面 新库增加的目录: --lvgm ----opticsfunc.hpp ----randfunc.cpp  Ready 需要大家拥有之前的向量库做支持 我们这一篇涉及到的库文件比较少 我们这一篇涉及