前言撤回日記

Peter De Jong Attractor with AS3.0

090411peterdejong.jpg
ジワジワと描画されます。停止・再描画は画面クリック。


なんかあいかわらず書くこともないので今さら感あふれるエントリーでお茶を濁す。

昨年、FlashをCS4の販売直前にCS3にアップデートした。我ながらアホかと思うものの目算が外れただけで何の考えもなしにそうしたワケではない。他人様にはどーでもいい話であるが。

で、実際にはアップデート前からさして不満はなかったのだけれども、ActionScript3.0もそろそろやっとかないとキャッチアップできなくなる、という危機感から購入してみたという。Flexなどやってられん。

その後しばらく時間を投資して多少は慣れてきたので、以前にActionScript2.0で作ってココに載せたPeter De Jongアトラクタをプロットする作例を3.0で書き直したモノを載っけておきます。

今回はコードと.Flaファイルもさらしものに。

サンプル(.zip)ファイル


var p:Point = new Point();
var mtrx:Matrix = new Matrix();
var _x:Number, _y:Number, dx:Number, dy:Number, a:Number, b:Number, c:Number, d:Number;
_x = _y = 1;
dx = dy = 0;
var stageW:uint = stage.stageWidth;
var stageH:uint = stage.stageHeight;
var step:uint = 10000;//一度に描くドットの数
var flag:Boolean = true;
var eraser:Rectangle = new Rectangle(0, 0, stageW, stageH);//消しゴム
var bgColor:uint = 0x00000000;
var bmd:BitmapData = new BitmapData(stageW, stageH, false, bgColor);
var bm:Bitmap = new Bitmap(bmd);

addChild(bm);

//インク
var point_mc:Shape = new Shape();
point_mc.graphics.beginFill(0xFFFFFF, 0.1);
point_mc.graphics.drawRect(0, 0, 1, 1);

//BitmapData上のピクセルにインクを置く
function plot(m):void {
var m = m;
bmd.draw(point_mc, m);
}
//BitmapDataをクリア
function clearBitmapData() {
bmd.fillRect(eraser, bgColor);
}

//初期値をランダムでセット
//(これだとカオスが発生するとは限らないが……)
function init():void {
clearBitmapData();
a = (Math.floor(Math.random()*100))*0.1-2.5;
b = (Math.floor(Math.random()*100))*0.1-2.5;
c = (Math.floor(Math.random()*100))*0.1-2.5;
d = (Math.floor(Math.random()*100))*0.1-2.5;
}

//Peter De Jong アトラクタを書く
function makePeterDeJong(e:Event):void {
for (var i:uint = 0; i< = step; i++) {
_x = Math.sin(a * dy) - Math.cos(b * dx);
_y = Math.sin(c * dx) - Math.cos(d * dy);
dx = _x;
dy = _y;
mtrx.tx = (stageW/4) * _x + stageW/2;
mtrx.ty = (stageH/4) * _y + stageH/2;
plot(mtrx);
}
}

//マウスクリックで描画開始・停止
function action(e:MouseEvent):void {
if(flag){
flag = false;
init();
addEventListener(Event.ENTER_FRAME, makePeterDeJong);
} else {
flag = true;
removeEventListener(Event.ENTER_FRAME, makePeterDeJong);
}
}

//描画
action(null);
flag = false;

stage.addEventListener(MouseEvent.CLICK, action);


前のバージョンではプロットの際にいちいちlineTo()していたのでオブジェクトがどんどん増加していた。
そのため処理が遅くなって負荷も向上したため数万プロットで処理を停止するようにしていたが、今回はBitmapData上に描いているのでいつまで実行させてもパフォーマンス落ちないはず。

個人的にはステージサイズを大きくしてプロットしたあと画面をキャプチャし、そこからPhotoshopブラシを作るとかして遊んでます。

夜桜

090407cherryblossoms01.jpg 090407cherryblossoms02.jpg 090407cherryblossoms03.jpg
気がつけばとうに2009年であり、およそ半年間の放置である。あんまりである。しかし何度も書くけどTwitterで足りてしまっている。あまり発信したい欲とかない。というか発信するほどのコンテンツが自分にはない。わかってたけど。

近隣の市にある中学校でもって夜桜がライトアップされているという話を聞きつけ、見物に行ってきた。
ボランティアのみなさんが甘酒を振る舞ってくださったので、ありがたくいただく。かたじけない。

桜というのはめずらしく花を下向きに咲かせる植物だそうで、中に入ってうたた寝なぞするとまた格別なんであるが、まあこのトシで木登りでもあるまいから下から見上げるに留め置いた。まるで人間に見せるために花開いたようなサービス精神旺盛な風情である。
赤みを帯びた光でなまめかしくライトアップされた桜もいいものだが、薄明かりの中でほの白く浮かび上がる幽玄な姿もなかなか捨てがたい。

来年もまた元気に咲いちょくれな、と願いつつ暇乞いをした。

Copyright © 2004 elbro.net