local function getSphere(meridians_H, meridians_V, sizex, sizey, sizez) local points = {} for m = 1, meridians_H do for n = 1, meridians_V do table.insert(points, { x = math.floor(math.sin(math.pi * m / meridians_H) * math.cos(2 * math.pi * n / meridians_V) * sizex), y = math.floor(math.sin(math.pi * m / meridians_H) * math.sin(2 * math.pi * n / meridians_V) * sizey), z = math.floor(math.cos(math.pi * m / meridians_H) * sizez) }) end end return points end out = getSphere(19,19,10,10,10) function print_r ( t ) local print_r_cache={} local function sub_print_r(t,indent) if (print_r_cache[tostring(t)]) then print(indent.."*"..tostring(t)) else print_r_cache[tostring(t)]=true if (type(t)=="table") then for pos,val in pairs(t) do if (type(val)=="table") then print(indent.."["..pos.."] => "..tostring(t).." {") sub_print_r(val,indent..string.rep(" ",string.len(pos)+8)) print(indent..string.rep(" ",string.len(pos)+6).."}") elseif (type(val)=="string") then print(indent.."["..pos..'] => "'..val..'"') else print(indent.."["..pos.."] => "..tostring(val)) end end else print(indent..tostring(t)) end end end if (type(t)=="table") then print(tostring(t).." {") sub_print_r(t," ") print("}") else sub_print_r(t," ") end print() end print_r(out)