二つの線分の交差する角度を求める

point1が交点。

var point0:Point, point1:Point, point2:Point;
point0 = new Point( 50, 100 );
point1 = new Point( 200, 200 );
point2 = new Point( 100, 300 );

point0.offset( -point1.x, -point1.y );
point2.offset( -point1.x, -point1.y );

var vector0:Vector3D, vector1:Vector3D;
vector0 = new Vector3D( point0.x, point0.y, 0 );
vector1 = new Vector3D( point2.x, point2.y, 0 );
var angle:Number = Vector3D.angleBetween( vector0, vector1 ); //このときはまだラジアン
var d:Number = angle * 180/Math.PI;

もっと早い書き方があるような気がするが、なんとか算出できた。

Pleskでつくるユーザの謎

Pleskでつくるドメイン毎のユーザでは、CakePHPのshellをうまく実行できない。こういうエラーが出てしまう。

PHP Fatal error:  Class 'AppModel' not found in /var/www/vhosts/...

普通に、adduserなどで作ったユーザはうまく行くのだが。おそらく、PATHの関係なのだと思うが、未だ原因がわからない。

SVGをas3で読み込む方法

as3でSVGを読み込むには、Frocessingライブラリが使える。

package
{
    import flash.display.Sprite;
    
    import frocessing.shape.FShapeSVG;
    
    public class TestSVG extends Sprite
    {
        [Embed(source="./assets/foo.svg", mimeType="application/octet-stream")]
        private var Svg:Class;

        public function TestSVG()
        {
            super();
            
            var svg:XML = XML( new Svg() );
            //shapeデータの生成
            var shapedata:FShapeSVG = new FShapeSVG(svg);
            //Spriteに変換
            var sprite:Sprite = shapedata.toSprite();
            //表示
            addChild( sprite );
        }
    }
}

Progression本は良い

ProgressionによるFlashコンテンツ開発ガイドブック待望のProgression本「ProgressionによるFlashコンテンツ開発ガイドブック」が届いた。クラススタイルを中心に、一気に読んだのだが、これまでいろんなBlogに分散していた情報が集約されていて効率良く学習できるし、すでに使いこなしている人でも今まで知らなかった機能や細かい機能を知ることができていいと思う。Progressionを学ぶための定石の本としてお勧め。

CakePHPで静的ページへのユーザ認証を除去

CakePHPで認証付きの静的ページを作る | Web活メモ帳を参考に、CakePHPでの静的ページへのユーザ認証を解除したのメモを。

なぜ、こんな処理が必要になったかというと、AppController内で、Authコンポーネントを有効にしたため。Controller全体にユーザ認証が効くようになったが、ユーザ認証無しでの公開を前提としている静的ページまでも、ユーザ認証が求められるようになったため、ユーザ認証を無効化する必要性が発生した。

AppControllerのbeforeFilterで、以下のように記述する。

function beforeFilter()
{
        // pages controllerかどうかをチェック
        // Pagesだったら、ユーザ認証は行わない
        if ($this->name == 'Pages')
        {
            $this->Auth->allow('*');
        }
}