flash on 2010-2-28
理解不足
途中。
♥2 |
Line 112 |
Modified 2010-02-28 17:09:49 |
MIT License
archived:2017-03-20 16:27:46
ActionScript3 source code
/**
* Copyright cpu_t ( http://wonderfl.net/user/cpu_t )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/eZJX
*/
// 理解不足
// 途中。
//
package {
import flash.display.Graphics;
import flash.display.Sprite;
public class FlashTest extends Sprite
{
private var data:Vector.<Number>;
private var graph:Sprite;
public function FlashTest()
{
data = new Vector.<Number>();
for (var i:int = 0; i < 256; i++)
{
data[i] = Math.sin(2 * Math.PI * i / 256)*.7;
data[i] += Math.sin(2 * Math.PI * (i+16) / 256 * 4) * .3;
if (i > 128)
{
data[i] *= .7;
data[i] += Math.sin(2 * Math.PI * i / 256 * 16) * .3;
}
}
setViewArea();
reset();
}
private function reset():void
{
var g:Graphics = graph.graphics;
g.clear();
// data output
g.lineStyle(1, 0);
g.moveTo(0, 50 - data[i] * 50);
for (var i:int = 0; i < data.length; i++)
{
g.lineTo(i, 50 - data[i] * 50);
}
g.endFill();
var out:Vector.<Number> = f(data);
g.lineStyle(1, 0);
g.moveTo(0, 200 - out[0] * 50);
for (i = 0; i < out.length; i++)
{
g.lineTo(i, 200 - out[i] * 50);
}
g.endFill();
out = ref(out);
g.lineStyle(1, 0);
g.moveTo(0, 350 - out[0] * 50);
for (i = 0; i < out.length; i++)
{
g.lineTo(i, 350 - out[i] * 50);
}
g.endFill();
}
private function ref(data:Vector.<Number>):Vector.<Number>
{
var out:Vector.<Number> = new Vector.<Number>();
for (var t:int = 0; t < data.length; t++)
{
out[t] = 0;
for (var f:int = 0; f < data.length; f++)
{
out[t] += data[f] * Math.cos(f * Math.PI * t / data.length);
}
}
return out;
}
private function f(data:Vector.<Number>):Vector.<Number>
{
var out:Vector.<Number> = new Vector.<Number>();
for (var f:int = 0; f < data.length; f++)
{
out[f] = 0;
for (var t:int = 0; t < data.length; t++)
{
out[f] += data[t] * Math.cos(f * Math.PI * t / data.length);
}
out[f] /= 256 / 2;
}
return out;
}
private function setViewArea():void
{
var sp:Sprite = new Sprite();
sp.x = 50;
addChild(sp);
sp.addChild(graph = new Sprite());
var g:Graphics = sp.graphics;
g.lineStyle();
g.beginFill(0xE0E0E0);
g.drawRect(0, 0, 256, 100);
g.endFill();
g.lineStyle(1, 0xFF0000);
g.moveTo(0, 50);
g.lineTo(256, 50);
g.endFill();
g.lineStyle();
g.beginFill(0xE0E0E0);
g.drawRect(0, 150, 256, 100);
g.endFill();
g.lineStyle(1, 0xFF0000);
g.moveTo(0, 200);
g.lineTo(256, 200);
g.endFill();
g.lineStyle();
g.beginFill(0xE0E0E0);
g.drawRect(0, 300, 256, 100);
g.endFill();
g.lineStyle(1, 0xFF0000);
g.moveTo(0, 350);
g.lineTo(256, 350);
g.endFill();
}
}
}