ドラゴン曲線
♥0 |
Line 65 |
Modified 2011-10-27 16:45:42 |
MIT License
archived:2017-03-20 08:57:35
ActionScript3 source code
/**
* Copyright gaziya ( http://wonderfl.net/user/gaziya )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/vZa4
*/
// forked from gaziya's frocessing用スケルトン
package {
import frocessing.display.F5MovieClip2DBmp
import flash.geom.Matrix
import flash.geom.Point
//import net.hires.debug.Stats
[SWF(width=465,height=465,frameRate=30)]
public class Main extends F5MovieClip2DBmp {
private var rate:Number = 1 / Math.sqrt(2)
private var theta:Number = -Math.PI / 4
private var points:Array
private var recursion:int = 12
private var count:int
private var wait:int = 7
private var skip:int = wait
public function setup():void {
background(0)
stroke(0xFFFFFF)
points = [new Point(random(30,80),random(100,300)),
new Point(random(350,400),random(100,300))]
count = 0
//addChild(new Stats())
}
public function draw():void {
if (skip < wait){
skip++
return
}else{
skip = 0
}
background(0)
for(var i:int=0; i<points.length;i++){
if (i==0){
moveTo(points[i].x,points[i].y)
}else{
lineTo(points[i].x,points[i].y)
}
}
count++
if (count < recursion){
var bp:Point = null
var ep:Point = null
var buf:Array = []
for each(var value:Point in points){
bp = ep
ep = value
if (bp != null) {
var matrix:Matrix = new Matrix()
matrix.translate(-bp.x,-bp.y)
matrix.scale(rate,rate)
matrix.rotate(theta)
matrix.translate(bp.x,bp.y)
theta *= -1
buf.push(matrix.transformPoint(ep))
buf.push(ep)
}else{
buf.push(ep)
}
}
points= buf
}else{
points = [new Point(random(30,80),random(100,300)),
new Point(random(350,400),random(100,300))]
count = 0
}
}
}
}