タグ

ブックマーク / yamasv.blog92.fc2.com (2)

  • 線対称の位置を行列で求める│miscellaneous

    原点を通ってx軸との角がΘで表される直線をはさんで対称の位置にある座標を求めるには行列 を掛ければよい。 (緑の線がx軸になるように軸を回転させ、yの値を反転させて、軸を元に戻す変換) 下の青いボールはマウスドラッグで移動できます。線の傾きは緑の点をドラッグして変えられます。赤いボールは青いボールと線対称の位置に自動的に移動します。 Mirror.swf 次に原点を通らない直線(Y = aX + b)の場合を考える。 x軸を下の図の点線の位置にずらして、直線が原点を通るような新しい座標系にしてしまえば上と同じ計算で求まる。 求まった座標は新しい座標系での座標なので、最後に元の座標系に戻せば答えが求まる。 x軸をbだけ上に移動する(3x3の)変換行列は であり、 元の位置に移動させる(x軸をbだけ下げる)変換行列は であるので 求めたい行列は となる。 Mirror2.swf Mirror.

    shidho
    shidho 2008/12/18
    サンプルがFlashで動いている。
  • [ActionScript 3.0] Fisher-Yatesアルゴリズムの可視化│miscellaneous

    要素をランダムに並べ替えるFisher-Yatesというアルゴリズムを可視化してみた。 下のウィンドウをマウスクリックすると並び替えの様子がアニメーションされます。 後ろから走査していって、自分より前のどれかと交換していく訳ですね。 計算量はO(n)です。 package{ import flash.display.*; import flash.events.*; import flash.geom.*; import flash.utils.*; import caurina.transitions.Tweener; [SWF(width="400", height="200",backgroundColor="0xffffff")] public class FisherYates2 extends Sprite{ private var balls:Array = []; priv

    shidho
    shidho 2008/01/19
    Tweenerの使い方も含めて。
  • 1