眠る開発屋blog ある開発屋の雑感。日々勉強。

2009/5/18 月曜日

遺伝アルゴリズムとか

Filed under: 技術メモ — タグ: , — dev0000 @ 1:56:18

フォント同士を交配させて新しいフォントを作る「genoTyp」が面白い
これ面白いなぁ。

『集合知プログラミング』を読んだのを思い出したので、そこの「遺伝アルゴリズム」を参考にして、それっぽいのを習作としてやってみた。

ルールは、
・まず最初にランダムな5個の数字 x 100組を生成する。
・5個の数字の積が1000になれば進化終了。1000に近いものを優先的に残す。
・100組のうち、結果がよい(積が1000に近いもの)50組を残す。
・突然変異(8割の確率)、交配(2割の確率)で新たに50組を生成する。
という感じ。

ってかなんだろね、このロジックを試してみるには、積が1000に近いとかって不適当かもしれんね。
数の並びとかあんま関係ないし。

[php]

2009/4/5 日曜日

PHPのlistとか

Filed under: 技術メモ — タグ: , — dev0000 @ 11:56:08

確かにまぁlistってあまり出現してこない。

PHPのlist表現を使おう
[php]
list(list($a), $b, list(list($c, $d))) = array(array(1), 2, array(array(3, 4)));[/php]

ネストできるんだ。なるほろ。

2009/4/4 土曜日

またFLARToolkit + WOWEngineとか

Filed under: 技術メモ — タグ: , — dev0000 @ 13:18:32

FLARToolkit + WOWEngineとか
の続き。

マーカー
Corocoro2.swf
Corocoro2.as

http://gihyo.jp/design/feature/01/flartoolkit/0003を参考にしたらだいぶんシンプルになった。

[actionscript]
private function _onEnterFrame(e:Event = null):void {

this._capture.bitmapData.draw(this._video);
if (this._detector.detectMarkerLite(this._raster, 80) && this._detector.getConfidence() > 0.5) {

this._detector.getTransformMatrix(this._resultMat);
this._baseNode.setTransformMatrix(this._resultMat);

var localRot:Matrix3D = Matrix3D.euler2matrix(new Number3D(0, 180, 90));
var rotMat:Matrix3D = Matrix3D.multiply3x3(this._baseNode.transform, localRot);

_rot = Matrix3D.matrix2euler(rotMat);

_ba.setRotation(0,0,_rot.z);
_wow.step();

_cube.rotationX = _rot.x;
_cube.rotationY = _rot.y;
_cube.rotationZ = _rot.z;
_cube.x = _baseNode.x;
_cube.y = _baseNode.y;
_cube.z = _baseNode.z;

_sphere.x = _baseNode.x + _particle.px;
_sphere.y = _baseNode.y + _particle.py;
_sphere.z = _baseNode.z + _particle.pz;

_sphere.visible = true;
_cube.visible = true;
} else {
_sphere.visible = false;
_cube.visible = false;
}
this._renderer.render();

}
[/actionscript]

2009/3/30 月曜日

FLARToolkit + WOWEngineとか

Filed under: 技術メモ — タグ: , — dev0000 @ 0:49:53

FLARToolKit スタートガイドのスクリプトを参考にして、
FLARToolkit + WOWEngine って感じで、箱の中をボールが転がるやつを作ってみました。

マーカー
Corocoro.swf
Corocoro.as

めんどくさいから、動画はなし。

ソースコードの一部だけど、試行錯誤したらこんな感じなってしまった。
座標の変換はもう少しお洒落に書けるんじゃないの?という気がする。
行列の計算とかよく分かってないし。

[actionscript]
private function _onEnterFrame(e:Event = null):void {
this._capture.bitmapData.draw(this._video);
if (this._detector.detectMarkerLite(this._raster, 80) && this._detector.getConfidence() > 0.5) {

this._detector.getTransformMatrix(this._resultMat);
this._baseNode.setTransformMatrix(this._resultMat);

_rot = Matrix3D.matrix2euler(this._baseNode.transform,_rot);

var rotz:Number = (int(_rot.z) – 180);
_ba.setRotation(0,0,rotz);
_wow.step();

var angle:Number = (-1 * rotz) * Math.PI / 180;
// var angle:Number = (1 * rotz) * Math.PI / 180;
var cos:Number = Math.cos(angle);
var sin:Number = Math.sin(angle);

_sphere.x = -(_particle.px * cos – _particle.py * sin) ;
_sphere.y = _particle.py * cos + _particle.px * sin ;
_sphere.z = _particle.pz;

this._baseNode.visible = true;
} else {
this._baseNode.visible = false;
}

this._renderer.render();

}

[/actionscript]

ってかね、WBoundAreaをぐるぐる回して、その結果から座標軸を算出するよりは、
WOWEngineのaddMasslessForceってところの重力定義を随時変更できれば楽なんだけどね。。。
いや、そうじゃなくて、WPlane で箱を作って、それを回せば、こんな無茶苦茶な計算は不要なのか、今気がついた。
何はともあれ、WOWEngineはぼちぼちver2が出るのだろうけど、もう少し枯れてきて欲しいとは思う。

といいますか、FLARToolkit + WOWEngine ネタだと、
Saqoosha.net::Adobe MAX 2009で公開されている ClothSimuDemo.as のソースコードのほうが分かりやすいよなぁ。。。
こっち見て作ればよかった。

[actionscript]
private function _onPreRender(e:Event):void {
if (checkInterrupted()) {
return;
}
for each (var v:Vertex in this._edge) {
var p:WSphere = WSphere(v.extra.physics);
var vi:Vertex = Vertex(v.extra.init);
this.multiplyVertex(this._ctx.arview.marker.transform, vi, this._tmp);
p.px = this._tmp.x;
p.py = this._tmp.y;
p.pz = this._tmp.z;
}
this._wow.step();
this._cloth.update();
this._cloth.updateNormal();
event(this._ctx.renderThread, RenderThread.PRE_RENDER, this._onPreRender);
interrupted(this._cleanup);
}

private function multiplyVertex(m:Matrix3D, vi:Vertex, vo:Vertex):Vertex {
var vx:Number = vi.x;
var vy:Number = vi.y;
var vz:Number = vi.z;
vo.x = vx * m.sxx + vy * m.sxy + vz * m.sxz + m.tx;
vo.y = vx * m.syx + vy * m.syy + vz * m.syz + m.ty;
vo.z = vx * m.szx + vy * m.szy + vz * m.szz + m.tz;
return vo;
}
[/actionscript]

2009/3/28 土曜日

「Debug Hacks」とか

Filed under: 書籍 — タグ: , — dev0000 @ 2:42:00

なんかWBCばかり見ていたということもあるけど、
今週は流れるように終わったなぁ。。。

『Debug Hacks』サンプルHack公開!

『Debug Hacks――デバッグを極めるテクニック&ツール』がいよいよ4月末に発刊されます。

これいいなぁ、おもしろそう。

2009/3/16 月曜日

PHPのSuhosinとか

Filed under: 技術メモ — タグ: , — dev0000 @ 17:27:57

Suhosinだと。
最近よく目にする。

PHPのセキュリティパッチというかセーフモード再びというか。

パッチを当てる方法もあるが、extension を作って入れるほうが簡単そう。

「PHPのセキュリティ対策Suhosin」

ContextFreeArtとか

Filed under: 技術メモ — タグ: — dev0000 @ 1:28:36

驚きの表現力のお絵かきプログラミング Context Free Art を試してみた
文脈自由絵画 Context Free Art

面白そうだったので、少しだけ触ってみた。
元々libpngやらbisonを入れてたからだと思うけど、CentOSには割と簡単に入ったよ。

cfdg

[code]
startshape ALL

rule ALL{
ITEM{}
ALL { x 1 y 1 size .85 h 15 r 10}
}

rule ITEM {
SQUARE { sat 1 b 1 }
}
[/code]

でも「画像が小さくなって消えて行かない再帰処理」を書いてしまうと、処理が終わらないね。。。
当り前といえば当り前なんだろうけど。

Flashとかでも似たようなこと出来たら面白いね。
多分、できるんだろうけど。

2009/3/13 金曜日

第41回PHP勉強会とか

Filed under: 技術メモ — タグ: , — dev0000 @ 1:24:55

第41回PHP勉強会@関東

やるんですね。月曜日かぁ。

2009/3/2 月曜日

都道府県のselectとか

Filed under: 技術メモ — タグ: , — dev0000 @ 2:19:23

CakePHP 1.2 で都道府県選択リストを表示する

やっぱり皆似たようなの作ってるんだね。
自分の場合は smarty だけど。

[php]
‘.$row.’‘;
} else {
$contents .= ‘‘;
}
}
return $contents;
}[/php]

2009/2/16 月曜日

途中returnとか

Filed under: 技術メモ — タグ: — dev0000 @ 0:52:35

return文は関数に一つだけ
ガード節による入れ子条件記述の置き換え

確かに途中returnってガード節を実現したいときぐらいにしか使ってないかもしれんな。

Older Posts »

Powered by WordPress