Function Dump/Mathematical Functions: Difference between revisions
>Mr Doom Bringer No edit summary |
>Mr Doom Bringer No edit summary |
(No difference)
|
Revision as of 23:43, 23 February 2010
Mathematical Functions
This library is an interface to the standard C math library. It provides all its functions inside the table math.
math.abs (x)
Returns the absolute value of x.
for i = -10, 10, .1 do local p = Instance.new("Part") p.Parent = game.Workspace p.Size = Vector3.new(1,1,1) p.Anchored = true p.CFrame=(CFrame.fromEulerAnglesXYZ(0,0,0)+Vector3.new(i,50+math.abs(i),0)) wait() end
math.acos (x)
Returns the arc cosine of x (in radians).
for i = -1, 1, .01 do local p = Instance.new("Part") p.Parent = game.Workspace p.Size = Vector3.new(1,1,1) p.Anchored = true p.CFrame=(CFrame.fromEulerAnglesXYZ(0,0,0)+Vector3.new(i*10,50+math.acos(i)*10,0)) wait() end
math.asin (x)
Returns the arc sine of x (in radians).
for i = -1, 1, .01 do local p = Instance.new("Part") p.Parent = game.Workspace p.Size = Vector3.new(1,1,1) p.Anchored = true p.CFrame=(CFrame.fromEulerAnglesXYZ(0,0,0)+Vector3.new(i*10,50+math.asin(i)*10,0)) wait() end
math.atan (x)
Returns the arc tangent of x (in radians).
for i = -5, 5, .1 do local p = Instance.new("Part") p.Parent = game.Workspace p.Size = Vector3.new(1,1,1) p.Anchored = true p.CFrame=(CFrame.fromEulerAnglesXYZ(0,0,0)+Vector3.new(i*10,50+math.atan(i)*10,0)) wait() end
math.atan2 (y, x)
Returns the arc tangent of y/x (in radians), but uses the signs of both parameters to find the quadrant of the result. (It also handles correctly the case of x being zero.)
for i = -5, 5, .1 do local p = Instance.new("Part") p.Parent = game.Workspace p.Size = Vector3.new(1,1,1) p.Anchored = true p.CFrame=(CFrame.fromEulerAnglesXYZ(0,0,0)+Vector3.new(i*10,50+math.atan2(1,i)*10,0)) wait() end
math.ceil (x)
Returns the smallest integer larger than or equal to x.
for i = 0, 50, .1 do local p = Instance.new("Part") p.Parent = game.Workspace p.Size = Vector3.new(1,1,1) p.Anchored = true p.CFrame=(CFrame.fromEulerAnglesXYZ(0,0,0)+Vector3.new(i,math.ceil(i),0)) wait() end
math.cos (x)
Returns the cosine of x (assumed to be in radians).
for i = 0, 50, .1 do local p = Instance.new("Part") p.Parent = game.Workspace p.Size = Vector3.new(1,1,1) p.Anchored = true p.CFrame=(CFrame.fromEulerAnglesXYZ(0,0,0)+Vector3.new(2*math.cos(i),i,0)) wait() end
math.cosh (x)
Returns the hyperbolic cosine of x.
for i = 0, 5, .1 do local p = Instance.new("Part") p.Parent = game.Workspace p.Size = Vector3.new(1,1,1) p.Anchored = true p.CFrame=(CFrame.fromEulerAnglesXYZ(0,0,0)+Vector3.new(i,2*math.cosh(i),0)) wait() end
math.deg (x)
Returns the angle x (given in radians) in degrees.
a=math.deg (1.5707963267948966192313216916398) print(a) Will result in: 90
math.exp (x)
Returns the the value e^x.
for i = -5, 5, .1 do local p = Instance.new("Part") p.Parent = game.Workspace p.Size = Vector3.new(1,1,1) p.Anchored = true p.CFrame=(CFrame.fromEulerAnglesXYZ(0,0,0)+Vector3.new(i,50+math.exp(i),0)) wait() end
math.floor (x)
Returns the largest integer smaller than or equal to x.
for i = 0, 50, .1 do local p = Instance.new("Part") p.Parent = game.Workspace p.Size = Vector3.new(1,1,1) p.Anchored = true p.CFrame=(CFrame.fromEulerAnglesXYZ(0,0,0)+Vector3.new(i,math.floor(i),0)) wait() end
math.fmod (x, y)
Returns the remainder of the division of x by y that rounds the quotient towards zero.
for i = -10, 10, 1 do local p = Instance.new("Part") p.Parent = game.Workspace p.Size = Vector3.new(1,1,1) p.Anchored = true p.CFrame=(CFrame.fromEulerAnglesXYZ(0,0,0)+Vector3.new(i,50+math.fmod(i,2),0)) wait() end
math.frexp (x)
Returns m and e such that x = m*2^e, e is an integer and the absolute value of m is in the range [0.5, 1) (or zero when x is zero).
print(math.frexp (0)) Will result in: 0 0
print(math.frexp (4)) Will result in: 0.5 3 -- (2^3/2=4)
math.huge
The value HUGE_VAL, a value larger than or equal to any other numerical value.
print(math.huge) Will result in: 1.#INF
math.ldexp (m, e)
Returns m*2^e (e should be an integer).
for i = -10, 10, 1 do local p = Instance.new("Part") p.Parent = game.Workspace p.Size = Vector3.new(1,1,1) p.Anchored = true p.CFrame=(CFrame.fromEulerAnglesXYZ(0,0,0)+Vector3.new(i,50+math.ldexp (i, 1),0)) wait() end
math.log (x)
Returns the natural logarithm of x.
for i = 0, 30, 1 do local p = Instance.new("Part") p.Parent = game.Workspace p.Size = Vector3.new(1,1,1) p.Anchored = true p.CFrame=(CFrame.fromEulerAnglesXYZ(0,0,0)+Vector3.new(i,50+5*math.log (i),0)) wait() end
math.log10 (x)
Returns the base-10 logarithm of x.
for i = 0, 30, 1 do local p = Instance.new("Part") p.Parent = game.Workspace p.Size = Vector3.new(1,1,1) p.Anchored = true p.CFrame=(CFrame.fromEulerAnglesXYZ(0,0,0)+Vector3.new(i,50+5*math.log10 (i),0)) wait() end
math.max (x, ···)
Returns the maximum value among its arguments.
print(math.max (1, 2, 3, 4, 5, 6, 7)) Will result in: 7
math.min (x, ···)
Returns the minimum value among its arguments.
print(math.min (1, 2, 3, 4, 5, 6, 7)) Will result in: 1
math.modf (x)
Returns two numbers, the integral part of x and the fractional part of x.
print(math.modf (2.5)) Will result in: 2 0.5
math.pi
The value of pi.
a=(math.pi^2) print(math.sqrt(a)) Will result in: 3.1415926535898
math.pow (x, y)
Returns x^y. (You can also use the expression x^y to compute this value.)
for i = 0, 10, .1 do local p = Instance.new("Part") p.Parent = game.Workspace p.Size = Vector3.new(1,1,1) p.Anchored = true p.CFrame=(CFrame.fromEulerAnglesXYZ(0,0,0)+Vector3.new(i+50,math.pow(i,2),0)) wait() end
math.rad (x)
Returns the angle x (given in degrees) in radians.
print(math.rad (90)) Will result in: 1.5707963267949 (Which is pi/2)
math.random ([m [, n]])
This function is an interface to the simple pseudo-random generator function rand provided by ANSI C. (No guarantees can be given for its statistical properties.)
When called without arguments, returns a pseudo-random real number in the range [0,1). When called with a number m, math.random returns a pseudo-random integer in the range [1, m]. When called with two numbers m and n, math.random returns a pseudo-random integer in the range [m, n].
local str = "" for i = 1,10 do local num = math.random(33,126) str = str .. string.char(num) end print(str)
math.randomseed (x)
Sets x as the "seed" for the pseudo-random generator: equal seeds produce equal sequences of numbers.
math.sin (x)
Returns the sine of x (assumed to be in radians).
for i = 0, 20, .1 do local p = Instance.new("Part") p.Parent = game.Workspace p.Size = Vector3.new(1,1,1) p.Anchored = true p.CFrame=(CFrame.fromEulerAnglesXYZ(0,0,0)+Vector3.new(3*math.sin(i),3*i,3*math.cos(i))) wait() end
math.sinh (x)
Returns the hyperbolic sine of x.
for i = -2, 2, .1 do local p = Instance.new("Part") p.Parent = game.Workspace p.Size = Vector3.new(1,1,1) p.Anchored = true p.CFrame=(CFrame.fromEulerAnglesXYZ(0,0,0)+Vector3.new(2*math.sinh(i),5*i+50,2*math.cosh(i))) wait() end
math.sqrt (x)
Returns the square root of x. (You can also use the expression x^0.5 to compute this value.)
for i = 0, 30, 1 do local p = Instance.new("Part") p.Parent = game.Workspace p.Size = Vector3.new(1,1,1) p.Anchored = true p.CFrame=(CFrame.fromEulerAnglesXYZ(0,0,0)+Vector3.new(i,50+5*math.sqrt (i),0)) wait() end
math.tan (x)
Returns the tangent of x (assumed to be in radians).
for i = 0, 50, .1 do local p = Instance.new("Part") p.Parent = game.Workspace p.Size = Vector3.new(1,1,1) p.Anchored = true p.CFrame=(CFrame.fromEulerAnglesXYZ(0,0,0)+Vector3.new(i,50+2*math.tan(i),0)) wait() end
math.tanh (x)
Returns the hyperbolic tangent of x.
for i = -5, 5, .1 do local p = Instance.new("Part") p.Parent = game.Workspace p.Size = Vector3.new(1,1,1) p.Anchored = true p.CFrame=(CFrame.fromEulerAnglesXYZ(0,0,0)+Vector3.new(i,50+2*math.tanh(i),0)) wait() end