Advertisement
Guest User

perlin wave generator

a guest
Jan 10th, 2012
215
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package
  2. {
  3.     import flash.display.Bitmap;
  4.     import flash.display.BitmapData;
  5.     import flash.display.Sprite;
  6.     import flash.events.Event;
  7.     import flash.geom.Point;
  8.     import flash.geom.Rectangle;
  9.     import flash.utils.ByteArray;
  10.    
  11.     public class Tester extends Sprite
  12.     {
  13.         private var noiseData:BitmapData;
  14.         private var noiseInfo:Object;
  15.        
  16.         private var drawData:BitmapData;
  17.         private var drawBMP:Bitmap;
  18.        
  19.         private var scaler:Number = 3;
  20.        
  21.         public function Tester()
  22.         {
  23.             var idx:uint
  24.             super();
  25.            
  26.             noiseData = new BitmapData(stage.stageWidth,1,false,0xFFFFFF);
  27.        
  28.             noiseInfo = {
  29.                 baseX: noiseData.width,
  30.                 baseY: noiseData.height,
  31.                 octaves: 4,
  32.                 seed: Math.floor(Math.random()*100),
  33.                 stitch: true,
  34.                 fractal: false,
  35.                 channels: 1,
  36.                 grayscale: true,
  37.                 offsets: new Array()
  38.             };
  39.            
  40.             drawData = new BitmapData(stage.stageWidth, stage.stageHeight, false, 0xFFFFFF);
  41.             drawBMP = new Bitmap(drawData);
  42.             addChild(drawBMP);
  43.            
  44.             idx = noiseInfo.octaves;
  45.             while(idx--) {
  46.                 noiseInfo.offsets.push(new Point(0,0));
  47.             }
  48.            
  49.             this.addEventListener(Event.ENTER_FRAME, everyFrame);
  50.         }
  51.        
  52.         private function everyFrame(evt:Event) {
  53.             var offset:Point;
  54.            
  55.             for each(offset in noiseInfo.offsets) {
  56.                 offset.x -= 5;
  57.             }
  58.            
  59.             createWave();
  60.         }
  61.         private function createWave() {
  62.             var vect:Vector.<uint>;
  63.             var idx:uint;
  64.             var thispixel:uint;
  65.             var y_val:uint;
  66.            
  67.             noiseData.perlinNoise(noiseInfo.baseX, noiseInfo.baseY, noiseInfo.octaves, noiseInfo.seed, noiseInfo.stitch, noiseInfo.fractal, noiseInfo.channels, noiseInfo.grayscale, noiseInfo.offsets);
  68.            
  69.             vect = noiseData.getVector(new Rectangle(0,0,noiseData.width,1));
  70.            
  71.             drawData.fillRect(new Rectangle(0,0,drawData.width, drawData.height),0xFFFFFF);
  72.            
  73.             for(idx = 0; idx < vect.length; idx++) {
  74.                 y_val = (vect[idx] & 0xFF) * scaler;
  75.                 drawData.fillRect(new Rectangle(idx, drawData.height - y_val, 1, y_val), 0x0000ff);
  76.                 drawData.fillRect(new Rectangle(idx, 0, 1, y_val), 0x0000ff);
  77.             }
  78.            
  79.            
  80.         }
  81.     }
  82. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement