fractalspleef.txt 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. world = world.get("creative");
  2. Mandelbrot_Start = loc.new(world,1000,125,1000);
  3. Juliaset_Start = loc.new(world,1000,75,1000);
  4. iterations = 15;
  5. size = 200;
  6. black_wool_mat = material.get("BLACK_WOOL");
  7. event.load("block_click");
  8. /*
  9. array = Mandelbrot();
  10. place_from_Array(array, Mandelbrot_Start);
  11. */
  12. @wait
  13. wait();
  14. if(player.getName(player) != "SirTerence7"){
  15. goto("wait");
  16. }
  17. if(block == null){
  18. goto("wait");
  19. }
  20. if(block.getType(block) != black_wool_mat){
  21. goto("wait");
  22. }
  23. if(outofrange(block.getLocation(block))){
  24. goto("wait");
  25. }
  26. array = JuliaSet(block);
  27. place_from_Array(array, Juliaset_Start);
  28. cancel = true;
  29. goto("wait");
  30. function outofrange(loc){
  31. if(loc.distance(loc, loc.mod($Mandelbrot_Start, $size/2, 0, $size/2)) > $size/2){
  32. return true;
  33. }
  34. return false;
  35. }
  36. function Mandelbrot(){
  37. Mandelbrot_array = array.new($size, $size);
  38. for(i = 0; i < $size; i++){
  39. c1 = 4*i/$size-2;
  40. waitfor(2);
  41. for(j = 0; j < $size; j++){
  42. c2 = 4*j/$size-2;
  43. z1 = 0;
  44. z2 = 0;
  45. count = $iterations;
  46. for(k = 0; k < $iterations; k++){
  47. z1 = math.pow(z1,2) - math.pow(z2,2) + c1;
  48. z2 = 2*z1*z2 + c2;
  49. if(math.pow(z1,2)+math.pow(z2,2) > 4){
  50. count = k;
  51. break;
  52. }
  53. }
  54. Mandelbrot_array[i,j] = count;
  55. }
  56. if(i%10 == 0){
  57. msg("dev", text.new(i/$size));
  58. }
  59. }
  60. return Mandelbrot_array;
  61. }
  62. function JuliaSet(block){
  63. block_loc = block.getLocation(block);
  64. origin_loc = $Juliaset_Start;
  65. p1 = 4*(loc.getX(block_loc)-loc.getX(origin_loc))/$size-2;
  66. p2 = 4*(loc.getZ(block_loc)-loc.getZ(origin_loc))/$size-2;
  67. Julia_array = array.new($size, $size);
  68. for(i = 0; i < $size; i++){
  69. z1 = 4*i/$size-2;
  70. for(j = 0; j < $size; j++){
  71. z2 = 4*j/$size-2;
  72. count = $iterations;
  73. for(k = 0; k < $iterations; k++){
  74. z1 = math.pow(z1,2) - math.pow(z2,2) + p1;
  75. z2 = 2*z1*z2 + p2;
  76. if(math.pow(z1,2)+math.pow(z2,2) > 4){
  77. count = k;
  78. break;
  79. }
  80. }
  81. Julia_array[i,j] = count;
  82. }
  83. if(i%10 == 0){
  84. msg("dev", text.new(i/$size));
  85. }
  86. }
  87. return Julia_array;
  88. }
  89. function place_from_Array(array, start_loc){
  90. world = loc.getWorld(start_loc);
  91. X = loc.getX(start_loc);
  92. Y = loc.getY(start_loc);
  93. Z = loc.getZ(start_loc);
  94. for(i = 0; i < $size; i++){
  95. for(j = 0; j < $size; j++){
  96. if(j%50 == 0){
  97. waitfor(2);
  98. }
  99. element = array[i,j];
  100. if(element < $iterations - 1){
  101. continue;
  102. }
  103. block = block.get(loc.new(world, X + i, Y, Z + j));
  104. block.setMaterial(block, $black_wool_mat, false);
  105. }
  106. }
  107. msg("dev", text.new("done"));
  108. }