Advertisement
Guest User

Untitled

a guest
Nov 23rd, 2017
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.05 KB | None | 0 0
  1. package civilizationclone;
  2.  
  3. import civilizationclone.Tile.Tile;
  4.  
  5.  
  6. public class Map {
  7.  
  8. public Tile[][] map;
  9. public float[][] simplexNoise;
  10.  
  11. public Map() {
  12. this.map = new Tile[80][40];
  13. }
  14.  
  15. void generateMap(){
  16. simplexNoise = generateSimplexNoise(this.map.length,this.map[0].length);
  17.  
  18. for(int i=0;i<simplexNoise.length;i++){
  19. for(int k=0;k<simplexNoise[i].length;k++){
  20. System.out.print(simplexNoise[i][k] + " ");
  21. }
  22. System.out.println("");
  23. }
  24. }
  25.  
  26. float[][] generateSimplexNoise(int width, int height){
  27. float[][] simplexnoise = new float[width][height];
  28. float frequency = 0.04f;
  29.  
  30. for(int x = 0; x < width; x++){
  31. for(int y = 0; y < height; y++){
  32. simplexnoise[x][y] = (float) noise(x * frequency,y * frequency);
  33. simplexnoise[x][y] = (simplexnoise[x][y] + 1) / 2; //generate values between 0 and 1
  34. }
  35. }
  36.  
  37. return simplexnoise;
  38. }
  39.  
  40. public static double noise(double xin, double yin){
  41. int grad3[][] = {{1,1,0},{-1,1,0},{1,-1,0},{-1,-1,0},{1,0,1},{-1,0,1},{1,0,-1},{-1,0,-1},{0,1,1},{0,-1,1},{0,1,-1},{0,-1,-1}};
  42. int p[] = {151,160,137,91,90,15,131,13,201,95,96,53,194,233,7,225,140,36,103,30,69,142,8,99,37,240,21,10,23,190,6,148,247,120,234,75,0,26,197,62,94,252,219,203,117,35,11,32,57,177,33,88,237,149,56,87,174,20,125,136,171,168,68,175,74,165,71,134,139,48,27,166,77,146,158,231,83,111,229,122,60,211,133,230,220,105,92,41,55,46,245,40,244, 102,143,54, 65,25,63,161, 1,216,80,73,209,76,132,187,208, 89,18,169,200,196, 135,130,116,188,159,86,164,100,109,198,173,186, 3,64,52,217,226,250,124,123, 5,202,38,147,118,126,255,82,85,212,207,206,59,227,47,16,58,17,182,189,28,42, 223,183,170,213,119,248,152, 2,44,154,163, 70,221,153,101,155,167, 43,172,9, 129,22,39,253, 19,98,108,110,79,113,224,232,178,185, 112,104,218,246,97,228, 251,34,242,193,238,210,144,12,191,179,162,241, 81,51,145,235,249,14,239,107, 49,192,214, 31,181,199,106,157,184, 84,204,176,115,121,50,45,127, 4,150,254, 138,236,205,93,222,114,67,29,24,72,243,141,128,195,78,66,215,61,156,180};
  43. int perm[] = new int[512];
  44. for(int i=0; i<512; i++) perm[i]=p[i & 255];
  45.  
  46. double n0,n1,n2;
  47.  
  48. final double F2 = 0.5*(Math.sqrt(3.0)-1.0);
  49. double s = (xin+yin)*F2;
  50. int i = fastfloor(xin+s);
  51. int j = fastfloor(yin+s);
  52.  
  53. final double G2 = (3.0-Math.sqrt(3.0))/6.0;
  54. double t = (i+j)*G2;
  55. double X0 = i-t;
  56. double Y0 = j-t;
  57. double x0 = xin-X0;
  58. double y0 = yin-Y0;
  59.  
  60. int i1, j1;
  61. if(x0>y0){
  62. i1=1;
  63. j1=0;
  64. }else{
  65. i1=0;
  66. j1=1;
  67. }
  68.  
  69. double x1 = x0 - i1 + G2;
  70. double y1 = y0 - j1 + G2;
  71. double x2 = x0 - 1.0 + 2.0 * G2;
  72. double y2 = y0 - 1.0 + 2.0 * G2;
  73.  
  74. int ii = i & 255;
  75. int jj = j & 255;
  76. int gi0 = perm[ii+perm[jj]] % 12;
  77. int gi1 = perm[ii+i1+perm[jj+j1]] % 12;
  78. int gi2 = perm[ii+1+perm[jj+1]] % 12;
  79.  
  80. double t0 = 0.5 - x0*x0-y0*y0;
  81. if(t0<0){
  82. n0 = 0.0;
  83. }else{
  84. t0 *= t0;
  85. n0 = t0*t0*dot(grad3[gi0],x0,y0);
  86. }
  87.  
  88. double t1 = 0.5 - x1*x1-y1*y1;
  89. if(t1<0){
  90. n1 = 0.0;
  91. }
  92. else{
  93. t1 *= t1;
  94. n1 = t1 * t1 * dot(grad3[gi1], x1, y1);
  95. }
  96.  
  97. double t2 = 0.5 - x2*x2-y2*y2;
  98. if(t2<0){
  99. n2 = 0.0;
  100. }
  101. else {
  102. t2 *= t2;
  103. n2 = t2 * t2 * dot(grad3[gi2], x2, y2);
  104. }
  105.  
  106. return 70.0 * (n0 + n1 + n2);
  107. }
  108.  
  109. private static double dot(int g[], double x, double y) { return g[0]*x + g[1]*y; }
  110. private static int fastfloor(double x) { return x>0 ? (int)x : (int)x-1; }
  111. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement