85 lines
2.0 KiB
Plaintext
85 lines
2.0 KiB
Plaintext
local module = {}
|
|
|
|
local vector = Vector3.new
|
|
local floor = math.floor
|
|
local noise = math.noise
|
|
local ceil = math.ceil
|
|
local abs = math.abs
|
|
local max = math.max
|
|
local min = math.min
|
|
local xor = bit32.bxor
|
|
local rot = bit32.rrotate
|
|
local mod = math.fmod
|
|
local function cheman(vec)
|
|
return max(abs(vec.Y),abs(vec.X)+abs(vec.Z))
|
|
end
|
|
local function man(vec)
|
|
return abs(vec.X)+abs(vec.Y)+abs(vec.Z)
|
|
end
|
|
local function che(vec)
|
|
return max(abs(vec.X),abs(vec.Y),abs(vec.Z))
|
|
end
|
|
local function mag(vec)
|
|
return vec.Magnitude
|
|
end
|
|
local function squircle(vec)
|
|
return vec.X^4 + vec.Y^4 + vec.Z^4
|
|
end
|
|
local function off(x,y,z)
|
|
local rx = noise(x*123.456,y*345.612,z*561.234)
|
|
local ry = noise(x*345.612,z*123.456,y*561.234)
|
|
local rz = noise(z*123.456,x*561.234,y*345.612)
|
|
local res = vector(rx,ry,rz).Unit * 0.5
|
|
return res,res + vector(x,y,z)
|
|
end
|
|
local pa = vector(0,0,0)
|
|
local pb = vector(1,0,0)
|
|
local pc = vector(0,1,0)
|
|
local pd = vector(0,0,1)
|
|
local pe = vector(1,1,0)
|
|
local pf = vector(0,1,1)
|
|
local pg = vector(1,0,1)
|
|
local ph = vector(1,1,1)
|
|
local function vor(x,y,z,fun)
|
|
local fx = floor(x)
|
|
local fy = floor(y)
|
|
local fz = floor(z)
|
|
local cx = ceil(x)
|
|
local cy = ceil(y)
|
|
local cz = ceil(z)
|
|
local center = vector(x,y,z)-vector(fx,fy,fz)
|
|
local av,aa = off(fx,fy,fz)
|
|
local bv,ba = off(cx,fy,fz)
|
|
local cv,ca = off(fx,cy,fz)
|
|
local dv,da = off(fx,fy,cz)
|
|
local ev,ea = off(cx,cy,fz)
|
|
local fv,fa = off(fx,cy,cz)
|
|
local gv,ga = off(cx,fy,cz)
|
|
local hv,ha = off(cx,cy,cz)
|
|
local a = fun(av+pa-center)
|
|
local b = fun(bv+pb-center)
|
|
local c = fun(cv+pc-center)
|
|
local d = fun(dv+pd-center)
|
|
local e = fun(ev+pe-center)
|
|
local f = fun(fv+pf-center)
|
|
local g = fun(gv+pg-center)
|
|
local h = fun(hv+ph-center)
|
|
local v = a
|
|
local vv = aa
|
|
if b < v then v = b vv = ba end
|
|
if c < v then v = c vv = ca end
|
|
if d < v then v = d vv = da end
|
|
if e < v then v = e vv = ea end
|
|
if f < v then v = f vv = fa end
|
|
if g < v then v = g vv = ga end
|
|
if h < v then v = h vv = ha end
|
|
return 1-(v*2),vv
|
|
end
|
|
|
|
module.vor = vor
|
|
module.man = man
|
|
module.mag = mag
|
|
module.che = che
|
|
module.cheman = cheman
|
|
|
|
return module |