Advertisement
Slashcs

sphere builder mc

Jul 17th, 2019
298
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.06 KB | None | 0 0
  1. r = 10
  2. layout = {}
  3. temp = {}
  4. xl = r*2
  5. arraySize = r*2
  6. posx = 1
  7. posy = 1
  8. posz = 1
  9. side = 0
  10.  
  11. ---------------------------------------------------------------------------
  12. --FUNCTIONS----------------------------------------------------------------
  13. ---------------------------------------------------------------------------
  14.  
  15. function fm()
  16. turtle.forward()
  17. if side == 0 then
  18. posx = posx + 1
  19. elseif side == 1 then
  20. posz = posz + 1
  21. elseif side == 2 then
  22. posx = posx - 1
  23. else
  24. posz = posz - 1
  25. end
  26. end
  27.  
  28. function bm()
  29. turtle.back()
  30. if side == 0 then
  31. posx = posx - 1
  32. elseif side == 1 then
  33. posz = posz - 1
  34. elseif side == 2 then
  35. posx = posx + 1
  36. else
  37. posz = posz + 1
  38. end
  39. end
  40.  
  41. function dm()
  42. turtle.down()
  43. posy = posy - 1
  44. end
  45.  
  46. function um()
  47. turtle.up()
  48. posy = posy + 1
  49. end
  50.  
  51. function tR()
  52. turtle.turnRight()
  53. if side < 3 then
  54. side = side + 1
  55. elseif side == 3 then
  56. side = 0
  57. end
  58. end
  59.  
  60. function tL()
  61. turtle.turnLeft()
  62. if side > 0 then
  63. side = side - 1
  64. elseif side == 0 then
  65. side = 3
  66. end
  67. end
  68.  
  69. function turnTo(targetSide)
  70. if math.abs(side - targetSide) == 2 then
  71. tR()
  72. tR()
  73. elseif side - targetSide == -1 or side - targetSide == 3 then
  74. tR()
  75. elseif side - targetSide == 1 or side - targetSide == -3 then
  76. tL()
  77. end
  78. side = targetSide
  79. end
  80.  
  81. function rotate()
  82. if (posz % 2) == 1 then
  83. for k = 1, 2 do
  84. tL()
  85. fm()
  86. end
  87. elseif (posz % 2) == 0 then
  88. for k = 1, 2 do
  89. tR()
  90. fm()
  91. end
  92. end
  93. end
  94.  
  95. function line ()
  96. for i = 1, xl do
  97. if layout[posx][posy][posz] == 1 then
  98. if turtle.getItemCount() > 0 then
  99. turtle.placeDown()
  100. else
  101. turtle.select(turtle.getSelectedSlot() + 1)
  102. turtle.placeDown()
  103. end
  104. end
  105. fm()
  106. print('g:'..i)
  107. end
  108. end
  109.  
  110. function nextSlice()
  111. if posz ~= 1 then
  112. turnTo(1)
  113. for i = 1, posz - 1 do
  114. bm()
  115. end
  116. end
  117. if posx ~= 1 then
  118. turnTo(0)
  119. for i = 1, posx - 1 do
  120. bm()
  121. end
  122. end
  123. um()
  124. end
  125.  
  126. function round(a)
  127. s = math.fmod(math.floor(a * 10), 10)
  128. if s < 5 then
  129. result = math.floor(a)
  130. else
  131. result = math.ceil(a)
  132. end
  133. return result
  134. end
  135.  
  136. ---------------------------------------------------------------------------
  137. --CALCULATING--------------------------------------------------------------
  138. ---------------------------------------------------------------------------
  139.  
  140. for i = 1, arraySize do
  141. layout[i] = {}
  142. for g = 1, arraySize do
  143. layout[i][g] = {}
  144. for f = 1, arraySize do
  145. layout[i][g][f] = 0
  146. end
  147. end
  148. end
  149.  
  150. for l = 1, r do
  151. temp[l] = {}
  152. for k = 1, r do
  153. temp[l][k] = {}
  154. for j = 1, r do
  155. temp[l][k][j] = 0
  156. end
  157. end
  158. end
  159.  
  160. xlim = round(math.cos(math.rad(45)) * r)
  161.  
  162. for i = 1, xlim do
  163. for k = 1, r + 1 - i do
  164. temp[i][round(math.sqrt(r^2 - (i - 0.5)^2 - (k - 0.5)^2))][k] = 1
  165. temp[i][k][round(math.sqrt(r^2 - (i - 0.5)^2 - (k - 0.5)^2))] = 1
  166. end
  167. end
  168.  
  169. for l = 1, r do
  170. slicenum = 1
  171. 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])
  172. end
  173.  
  174. ---------------------------------------------------------------------------
  175. --INSERTING----------------------------------------------------------------
  176. ---------------------------------------------------------------------------
  177.  
  178. -- i - nomer tablici (x)
  179. -- j - y
  180. -- k - z
  181.  
  182. for i = 1, xlim do
  183. for j = 1, r do
  184. for k = 1, r do
  185. layout[i+r][j+r][k+r] = temp[i][j][k]
  186. layout[k+r][j+r][i+r] = temp[i][j][k]
  187. layout[i+r][j+r][r + 1 - k] = temp[i][j][k]
  188. layout[k+r][j+r][r + 1 - i] = temp[i][j][k]
  189. layout[r + 1 - i][j+r][k+r] = temp[i][j][k]
  190. layout[r + 1 - k][j+r][i+r] = temp[i][j][k]
  191. layout[r + 1 - i][j+r][r + 1 - k] = temp[i][j][k]
  192. layout[r + 1 - k][j+r][r + 1 - i] = temp[i][j][k]
  193. layout[i+r][r + 1 - j][k+r] = temp[i][j][k]
  194. layout[k+r][r + 1 - j][i+r] = temp[i][j][k]
  195. layout[i+r][r + 1 - j][r + 1 - k] = temp[i][j][k]
  196. layout[k+r][r + 1 - j][r + 1 - i] = temp[i][j][k]
  197. layout[r + 1 - i][r + 1 - j][k+r] = temp[i][j][k]
  198. layout[r + 1 - k][r + 1 - j][i+r] = temp[i][j][k]
  199. layout[r + 1 - i][r + 1 - j][r + 1 - k] = temp[i][j][k]
  200. layout[r + 1 - k][r + 1 - j][r + 1 - i] = temp[i][j][k]
  201. end
  202. end
  203. end
  204.  
  205. ---------------------------------------------------------------------------
  206. --BUILDING-----------------------------------------------------------------
  207. ---------------------------------------------------------------------------
  208. for i = 1, arraySize do
  209. tR()
  210. for c = 1, xl do
  211. line()
  212. rotate()
  213. end
  214. nextSlice()
  215. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement