双三次補間法 – AS3.0

前回の画像のリサイズ – AS3.0で、バイキュービック補間の名前を出しておきながら、例を出してなかったので補足しておきます。 双三次補間法。(参考:内挿 (Wikipedia)) Photoshop等の多くのグラフィックソフトではバイキュービック(Bi-Cubic)補間と表現されています。 これはバイリニア(線形)補間よりも高精度な補間法で、16近傍の画素値から三次関数を用いて補間します。 用いる式はsinc関数(矩形関数をフーリエ変換したときに得られる)の近似式になります。 これ…

画像のリサイズ – AS3.0

AS3で画像処理入門(その4) – flashrodにて、ActionScript3.0による画像のリサイズ処理をしてるエントリーを見つけました。 リンク先のエントリーではリサイズ処理の補間方法についての説明がなかったので簡単に、 ・補間方法について  幾何学変換では理論上は変換行列を用いることで実現できますが,デジタル画像においては,入力画像の各座標値に変換行列を掛け合わせただけでは不完全です.それはデジタル画像の座標は正の整数値で表現されるため,小数点を含んだ座標を参照することが…

efficient as3 part2

efficient as3の続きのエントリです。 Tips on how to write efficient AS3 – part 2の簡単な意訳。 Array push vs. Array index pushを使ってはいけない。値をセットする時はlist[list.length] = data;のようにしよう。配列の長さは外部変数に保存して、要素を追加/削除した時はその変数をインクリメント/デクリメント。 //コメント欄でのBlizzさんの指摘:list[list.length…

Hilbert Curve – Flex(AS3.0)

Hilbert Curve DEMO (Flex) モチベーションが上がっている内にたくさんコードを書こう。 ヒルベルト曲線をActionScriptで。再帰曲線というやつですね。 これは空間を覆い尽くす空間充填曲線の一つで、画像工学分野にも応用されています。画像の場合だと、画素をヒルベルト曲線順に走査するヒルベルトスキャンという手法があって、それに関連した論文もたくさん出ています。 今回はFlash Player 10で新たに追加されたグラフィックスAPIを使う練習も兼ねて、drawPathと…

Tinkerbell Map – AS3.0

Tinkerbell Map DEMO Tinkerbell mapをActionScriptで。 以前作ったHénon map同様、非線形写像によるお絵かきです。 計算式は以下のとおりです。 f( x, y ) = ( x2 – y2 + ax + by, 2xy + cx + dy ) (a, b, c, d) = (0.9, -0.6013, 2.0, 0.5) 今回は基本の形を魅せるつもりで作ったのでインタラクティブ性はありません。asオンリー。 パラメータが3つ以上あるとユ…

DisplacementMapFilter – AS

DisplacementMapFilterを初めて使ってみました。(このメソッドはFlash8から使えます) これを利用したエフェクトのひとつとして、水面を模した波紋効果などが有名です。 今回は置き換えマップとして単純な円形グラデーションを利用しました。赤色でグラデーションを作成しているので、DisplacementMapFilterのcomponentXとcomponentYにはBitmapDataChannel.REDを指定。メソッドの引数が多くて使い方を調べるのが大変でしたが、一度理解すれ…

efficient as3

Tips on how to write efficient AS3 >> Lost In Actionscript (2008/09/28の記事)の日本語訳。 既にこっちでも検証済みの項目はあると思いますが、一応まとめとして要点を意訳しておきます。 詳細を知りたい場合は原文を。あと、間違いがあったら指摘してくれるとうれしいです。 Array & Object constructing new Array() と new Object() は [] と {}より3倍遅い。(…

Dynamic Class – AS3.0

ActionScript3.0の動的クラス(dynamic class)。 Javaだとこれがないのでちょっと調べてみました。 使うにはclassの前にdynamicって付ければいいみたい。

なるほどダイナミック。 あと、オブジェクトの動的プロパティに対して反復処理を行うfor..inを使うと、上述のように後から追加したプロパティとかメソッドのみが処理されているのがわかると思います。 dynamic classを使えばクラスベース…