1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
| package {
import flash.display.Sprite;
import flash.display.Bitmap;
import flash.display.StageScaleMode;
import flash.display.StageAlign;
import flash.display.BitmapData;
import flash.text.TextField;
import flash.events.Event;
import com.bit101.components.*;
import flash.geom.Rectangle;</p>
[SWF(backgroundColor="0xFFFFFF", width="600", height="400", frameRate="30")]
public class PerlinNoise1D extends Sprite {
private const imgWidth:Number = 400;
private const imgHeight:Number = 400;
private var octaves:int = 8;
private var decay:Number= 1;
private var bm:Bitmap;
private var bmd:BitmapData;
public function PerlinNoise1D() {
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
//create a bitmap data
bmd = new BitmapData(imgWidth, imgHeight, false, 0x00000000);
//create a bitmao using the data object
bm = new Bitmap(bmd);
addChild(bm);
drawGraph();
drawUI();
}
private function drawUI():void {
var ui:Sprite = new Sprite();
//octaves
var octaves_sldr:HSlider = new HSlider(ui, 50, 20, function(e:Event):void {
octaves = Math.round(e.target.value);
octaves_val.text = ""+octaves;
drawGraph();
});
octaves_sldr.setSliderParams(1,10,1);
var octaves_lbl:Label = new Label(ui, 0, 15, "octaves");
var octaves_val:Label = new Label(ui, 150, 15, "8");
//decay - between 0 & 1
var decay_sldr:HSlider = new HSlider(ui, 50, 40, function(e:Event):void {
decay = e.target.value;
decay_val.text = ""+decay;
drawGraph();
});
decay_sldr.setSliderParams(0,1,1);
var decay_lbl:Label = new Label(ui, 0, 35, "decay");
var decay_val:Label = new Label(ui, 150, 35, "1");
ui.x = 100;
ui.y = 5;
ui.alpha= 0.5;
addChild(ui);
}
private function drawGraph():void {
var y:Number = 0;
var perlin:PerlinNoise = new PerlinNoise();
bmd.fillRect(new Rectangle(0, 0, imgWidth, imgHeight), 0x00000000);
//get 1D Perlin noise
var pNoise:Array = perlin.getPerlinNoise_1D(imgWidth,octaves,decay);
trace(pNoise);
//loop through each point and draw
for(var i:int = 0; i < pNoise.length; i++){
y = pNoise[i]*imgHeight + imgHeight/2;//make y positive value between 0 & imgHeight
bmd.setPixel(i,Math.round(y), 0xFFFFFFFF);
}
//bm.bitmapData = bmd;
}
}
}
// Copyright (c) 2008 David Wilhelm
// MIT license: http://www.opensource.org/licenses/mit-license.php
|