Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- r = 10
- layout = {}
- temp = {}
- xl = r*2
- arraySize = r*2
- posx = 1
- posy = 1
- posz = 1
- side = 0
- ---------------------------------------------------------------------------
- --FUNCTIONS----------------------------------------------------------------
- ---------------------------------------------------------------------------
- function fm()
- turtle.forward()
- if side == 0 then
- posx = posx + 1
- elseif side == 1 then
- posz = posz + 1
- elseif side == 2 then
- posx = posx - 1
- else
- posz = posz - 1
- end
- end
- function bm()
- turtle.back()
- if side == 0 then
- posx = posx - 1
- elseif side == 1 then
- posz = posz - 1
- elseif side == 2 then
- posx = posx + 1
- else
- posz = posz + 1
- end
- end
- function dm()
- turtle.down()
- posy = posy - 1
- end
- function um()
- turtle.up()
- posy = posy + 1
- end
- function tR()
- turtle.turnRight()
- if side < 3 then
- side = side + 1
- elseif side == 3 then
- side = 0
- end
- end
- function tL()
- turtle.turnLeft()
- if side > 0 then
- side = side - 1
- elseif side == 0 then
- side = 3
- end
- end
- function turnTo(targetSide)
- if math.abs(side - targetSide) == 2 then
- tR()
- tR()
- elseif side - targetSide == -1 or side - targetSide == 3 then
- tR()
- elseif side - targetSide == 1 or side - targetSide == -3 then
- tL()
- end
- side = targetSide
- end
- function rotate()
- if (posz % 2) == 1 then
- for k = 1, 2 do
- tL()
- fm()
- end
- elseif (posz % 2) == 0 then
- for k = 1, 2 do
- tR()
- fm()
- end
- end
- end
- function line ()
- for i = 1, xl do
- if layout[posx][posy][posz] == 1 then
- if turtle.getItemCount() > 0 then
- turtle.placeDown()
- else
- turtle.select(turtle.getSelectedSlot() + 1)
- turtle.placeDown()
- end
- end
- fm()
- print('g:'..i)
- end
- end
- function nextSlice()
- if posz ~= 1 then
- turnTo(1)
- for i = 1, posz - 1 do
- bm()
- end
- end
- if posx ~= 1 then
- turnTo(0)
- for i = 1, posx - 1 do
- bm()
- end
- end
- um()
- end
- function round(a)
- s = math.fmod(math.floor(a * 10), 10)
- if s < 5 then
- result = math.floor(a)
- else
- result = math.ceil(a)
- end
- return result
- end
- ---------------------------------------------------------------------------
- --CALCULATING--------------------------------------------------------------
- ---------------------------------------------------------------------------
- for i = 1, arraySize do
- layout[i] = {}
- for g = 1, arraySize do
- layout[i][g] = {}
- for f = 1, arraySize do
- layout[i][g][f] = 0
- end
- end
- end
- for l = 1, r do
- temp[l] = {}
- for k = 1, r do
- temp[l][k] = {}
- for j = 1, r do
- temp[l][k][j] = 0
- end
- end
- end
- xlim = round(math.cos(math.rad(45)) * r)
- for i = 1, xlim do
- for k = 1, r + 1 - i do
- temp[i][round(math.sqrt(r^2 - (i - 0.5)^2 - (k - 0.5)^2))][k] = 1
- temp[i][k][round(math.sqrt(r^2 - (i - 0.5)^2 - (k - 0.5)^2))] = 1
- end
- end
- for l = 1, r do
- slicenum = 1
- print(temp[slicenum][l][1], temp[slicenum][l][2], temp[slicenum][l][3], temp[slicenum][l][4], temp[slicenum][l][5], temp[slicenum][l][6])
- end
- ---------------------------------------------------------------------------
- --INSERTING----------------------------------------------------------------
- ---------------------------------------------------------------------------
- -- i - nomer tablici (x)
- -- j - y
- -- k - z
- for i = 1, xlim do
- for j = 1, r do
- for k = 1, r do
- layout[i+r][j+r][k+r] = temp[i][j][k]
- layout[k+r][j+r][i+r] = temp[i][j][k]
- layout[i+r][j+r][r + 1 - k] = temp[i][j][k]
- layout[k+r][j+r][r + 1 - i] = temp[i][j][k]
- layout[r + 1 - i][j+r][k+r] = temp[i][j][k]
- layout[r + 1 - k][j+r][i+r] = temp[i][j][k]
- layout[r + 1 - i][j+r][r + 1 - k] = temp[i][j][k]
- layout[r + 1 - k][j+r][r + 1 - i] = temp[i][j][k]
- layout[i+r][r + 1 - j][k+r] = temp[i][j][k]
- layout[k+r][r + 1 - j][i+r] = temp[i][j][k]
- layout[i+r][r + 1 - j][r + 1 - k] = temp[i][j][k]
- layout[k+r][r + 1 - j][r + 1 - i] = temp[i][j][k]
- layout[r + 1 - i][r + 1 - j][k+r] = temp[i][j][k]
- layout[r + 1 - k][r + 1 - j][i+r] = temp[i][j][k]
- layout[r + 1 - i][r + 1 - j][r + 1 - k] = temp[i][j][k]
- layout[r + 1 - k][r + 1 - j][r + 1 - i] = temp[i][j][k]
- end
- end
- end
- ---------------------------------------------------------------------------
- --BUILDING-----------------------------------------------------------------
- ---------------------------------------------------------------------------
- for i = 1, arraySize do
- tR()
- for c = 1, xl do
- line()
- rotate()
- end
- nextSlice()
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement