-
Exponential sine wave
Hello!
With this code I can draw a simple sine wave on the stage:
http://s4.postimg.org/og2ym1hil/sine.jpg
Code:
var frequency:Number = 5;
var axisY:Number = stage.stageHeight*.5;
var amplitudeMultiplier:Number = 32;
graphics.lineStyle(2);
graphics.moveTo(0, axisY);
for (var i:uint = 0; i <= stage.stageWidth; i++) {
var amplitude:Number = Math.sin(frequency * Math.PI*2 * i/stage.stageWidth);
graphics.lineTo(i, axisY - amplitude*amplitudeMultiplier);
}
But... I want to draw a exponential sine wave, like this:
http://s24.postimg.org/ji8pik4ad/exp.jpg
I think the Math.exp()-function can be useful. Please, help!
Thanks already!
-
-
You mean this kind?
You mean this kind?
Add this code at the end.
I hope this works like you think.
Code:
frequency=frequency+frequency/1000;
-
There are two approaches you can take. Either adjust the frequency directly in the loop or take into account the i:
This one basically adjusts the frequency based upon the x position.
Code:
for (var i:uint = 0; i <= stage.stageWidth; i++) {
var amplitude:Number = Math.sin((frequency+i/10) * Math.PI*2 * i/stage.stageWidth);
graphics.lineTo(i, axisY - amplitude*amplitudeMultiplier);
}
This basically keeps increasing the frequency based upon the number of loops run.
Code:
for (var i:uint = 0; i <= stage.stageWidth; i++) {
var amplitude:Number = Math.sin(frequency * Math.PI*2 * i/stage.stageWidth);
frequency+=frequency/100;
graphics.lineTo(i, axisY - amplitude*amplitudeMultiplier);
}
Either one will work but the one based upon x position would probably be simpler in some ways.