Bienvenidos sean a este post, hoy comenzaremos con una serie de posts donde hablaremos sobre las librerias basicas de Lua.

Anuncios

La primera de ellas va a ser la que esta relacionada a las operaciones matematicas. esta libreria comprende un conjunto de funciones matematicas tanto como operaciones trigonometricas:

  • sin
  • cos
  • tan
  • acos
  • asin
Anuncios

Exponenciacion y logaritmos:

  • exp
  • log
  • log10
Anuncios

Funciones de redondeo:

  • floor
  • ceil
  • max
  • min
Anuncios

Funciones para generar pseudo numeros a la azar:

  • random
  • randomseed
Anuncios

Ademas de las variables pi y huge (devuelve el numero representable mas grande), todas las funciones trigonometricas trabajan en radianes por lo que puedes usar las funciones deg y rad para convertir entre grados y radianes, aunque si quieres trabajar en grados puedes redefinir las funciones trigonomentricas:

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
...
Anuncios

La funcion math.random genera pseudo numeros a la azar a los cuales podemos llamar de tres formas:

  • Cuando lo llamamos sin argumentos
  • Cuando lo llamamos con un solo argumento, un entero n
  • Cuando lo llamamos con dos argumentos de tipo entero

En el primer devuelve un pseudo numero a la azar real con distribucion uniforme en el intervalo [0, 1], para el segundo caso devuelve un pseudo numero al azar como l es menor o igual a x y este a su vez menor o igual a n y para el tercer caso obtendremos un pseudo rango donde l es menor o igual a x y este menor o igual u (segundo valor), tambien podes configurar una “semilla” para un generador pseudo al azar con la funcion randomseed, su unico argumento es la semilla, usualmente cuando un programa inicia, este inicializa el generador con una semilla fija, esto significa que cada vez que ejecutas tu programa se genera la misma secuencia de numeros pseudo al azar, para depuracion es una linda propiedad pero para un juego vas a tener el mismo escenario una y otra vez, un truco comun para resolver este problema es utilizar el tiempo actual como semilla, veamos el siguiente codigo con algunos ejemplos:

Anuncios
> print(math.random())
0.18347165407613
> print(math.random(10))
6
> print(math.random(1,20))
9
> math.randomseed(os.time())
>

Observen como fueron trabajando cada una de las posibilidades de random, en el ultimo caso es lo que habiamos hablado anteriormente.

Anuncios
Nota: La funcion os.time devuelve un numero que representa la hora actual, usualmente nos devuelve el tiempo Unix.

La funcion math.random utiliza la funcion rand de la libreria estandar de C pero en algunas implementaciones esta funcion produce numeros con no tan buena propiedades estadisticas.

Anuncios

En resumen, este fue un simple vistazo a la libreria para funciones matematicas en Lua, algunas de sus funciones, como pueden ser reemplazadas, como funciona los numeros al azar, como se pueden optimizar y como se pueden utilizar, espero les haya sido util sigueme en Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Tengo un Patreon donde podes acceder de manera exclusiva a material para este blog antes de ser publicado, sigue los pasos del link para saber como.

Tambien podes donar

Es para mantenimiento del sitio, gracias!

$1.00