This section is more of a reference to how to use the math library in Lua. We aren’t going to go too into depth for each function. The math library can be divided up into several different classes of functions. We have rounding, trigonometrical, etc.
Math Constants
Constant | Description |
---|---|
math.huge | Infinity |
math.maxinteger | The biggest integer |
math.mininteger | The smallest integer |
math.pi | A constant for Pi |
Math Functions
Conversion and Rounding
Function | Description |
---|---|
math.abs( x ) | Returns the absolute value of x |
math.ceil( x ) | Rounds x up to the nearest int |
math.floor( x ) | Rounds x down to the nearest int |
math.fmod( x, y ) | Get the remainder from dividing x / y |
math.modf( x ) | Get the integer and fractional part for x, (2.5 = 2, 0.5) |
math.tointeger( x ) | Converts x to an integer, returns nil otherwise |
math.type( x ) | Gets the numerical type of x, either integer, float, or nil |
math.ult( x, y ) | Get a boolean if x as an unsigned int is less than y as an unsigned int |
Trigonometrical
Function | Description |
---|---|
math.acos( x ) | Gets the arc cosine in radians for x |
math.asin( x ) | Gets the arc sine in radians for x |
math.atan( x [, y] ) | Gets the arc tan in radians for x or x/y |
math.cos( x ) | Gets the cosine for radian value x |
math.deg( x ) | Converts angle x from radians to degrees |
math.rad( x ) | Converts angle x from degrees to radians |
math.sin( x ) | Gets the sine for radian value x |
math.tan( x ) | Gets the tangent for radian value x |
Random
Function | Description |
---|---|
math.random( [x [, y]] ) | Get a random number between 0 and 1, or 1 and x, or x and y (must be positive ints) |
math.randomseed( x ) | Seed the random number generator |
Comparative
Function | Description |
---|---|
math.max( x, … ) | Get the largest value between x and every other argument |
math.min( x, … ) | Get the lowest value between x and every other argument |
Exponential and Logarithmic
Function | Description |
---|---|
math.exp( x ) | Get ex |
math.log( x [, base ] ) | Get the natural logarithm for x, or a logarithm of base for x |
math.sqrt( x ) | Get x0.5 |
Simple Rounding
We have both math.floor( x ) and math.ceil( x ), but how do we round based on the fractional part of x being greater than or equal to, or less than 0.5? A quick trick for this is to do:
rounded = math.floor( x + 0.5 )
Exercises
We aren’t going to cover any specific details with these as they should be pretty self-explanatory. Try each one out and see what happens when you give it weird parameters. What happens with a negative value for x for math.sqrt( x )? What exactly does math.ult( x, y ) do for negative values? How could you do a true round function using math.ceil( x )?
very good well done thanks