Advertisement
Guest User

Untitled

a guest
Nov 7th, 2017
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.   // The radial island radius is based on overlapping sine waves
  2.   static public var ISLAND_FACTOR:Number = 1.07;  // 1.0 means no small islands; 2.0 leads to a lot
  3.   static public function makeRadial(seed:int):Function {
  4.     var islandRandom:PM_PRNG = new PM_PRNG();
  5.     islandRandom.seed = seed;
  6.     var bumps:int = islandRandom.nextIntRange(1, 6);
  7.     var startAngle:Number = islandRandom.nextDoubleRange(0, 2*Math.PI);
  8.     var dipAngle:Number = islandRandom.nextDoubleRange(0, 2*Math.PI);
  9.     var dipWidth:Number = islandRandom.nextDoubleRange(0.2, 0.7);
  10.    
  11.     function inside(q:Point):Boolean {
  12.       var angle:Number = Math.atan2(q.y, q.x);
  13.       var length:Number = 0.5 * (Math.max(Math.abs(q.x), Math.abs(q.y)) + q.length);
  14.  
  15.       var r1:Number = 0.5 + 0.40*Math.sin(startAngle + bumps*angle + Math.cos((bumps+3)*angle));
  16.       var r2:Number = 0.7 - 0.20*Math.sin(startAngle + bumps*angle - Math.sin((bumps+2)*angle));
  17.       if (Math.abs(angle - dipAngle) < dipWidth
  18.           || Math.abs(angle - dipAngle + 2*Math.PI) < dipWidth
  19.           || Math.abs(angle - dipAngle - 2*Math.PI) < dipWidth) {
  20.         r1 = r2 = 0.2;
  21.       }
  22.       return  (length < r1 || (length > r1*ISLAND_FACTOR && length < r2));
  23.     }
  24.  
  25.     return inside;
  26.   }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement