二点間の角度を求める

不運なことに私の数学の知識は殆ど無に等しいので、
原点と、ある座標を結んでできる線分の角度を求める方法を知りません。

何となく分かるのは、(x, y) = (10, 10)の時、見た感じ45度だろうという事、
sin, cos, tan(三角関数というらしい)のどれかを使えばできそうということだけです。

45degree

さっそく数学の公式の載っているサイトhttp://keisan.casio.jp/
を見てみると、

atan

なるほど、わかりません。

数学詳しい人に聞いたら tan^-1 はアークタンジェント(逆正接関数)というものらしいので、
プログラミング言語で言うところの atan(y/x) 関数で処理ができそうです。
と思って試していたら、「ゼロ除算」エラーが出ました。
90° の時はゼロで割ることになってしまうので当然ですがエラーになります。

このようなときのためにちゃんと atan2(y, x) という関数が用意されているみたいです。

ためしに「echo atan2(10,10)」を実行してみると「0.78539816339745」という値が得られました。
これはラジアンという単位だそうで、度数法で表すには PHP では rad2deg() で変換できます。
AS3.0 の場合円周率を用い、「 Math.atan2(y,x) * 180 / Math.PI 」で度数を求めます。
ちなみに、PHP で円周率を用いる場合は pi() が使えます。

Aptana Studio で Ant を使う

Flex SDK 等のビルドをしたい時、Eclipse なら付属の Ant を使うのですが、
Aptana Studio では付属していないようなので、外部ツールとして登録します。

今回使用するツールのバージョンは
Aptana Studio 3.2
Apache Ant 1.8.4
です。

まずは Apache Ant をダウンロードします。
http://ant.apache.org/bindownload.cgi

あとは展開して設置します。
私は「C:\apache-ant\」としました。

初期設定では外部ツールは非表示なので、「Window」メニューの
「Customize Perspective」から、「Command Groups Availability」タブを選び、
「External Tools」にチェックを入れます。

次は外部ツールとして Ant を登録します。
「Run」メニューから 「External Tools」の「External Tools Configurations」に進み、
「Program」ツリーに新しく設定情報を作成します。

「Name:」は任意の名前、
「Location:」は bin の「ant.bat」の場所、
「Working Directory」はbuild.xml を設置する場所
をそれぞれ記入します。

私の場合は

「Name:」に「Ant」
「Location:」に「C:\apache-ant\bin\ant.bat」
「Working Directory」に「${workspace_loc}${project_path}\」
を指定しました。

「Working Directory」では変数を使い、ワークスペース内の
プロジェクトディレクトリ名を指定したので、
各プロジェクトフォルダの直下に build.xml を作ることになります。
あとは build.properties ファイルを作り、External Tools ボタンから
Run すればビルドできます。

Flash ファイルアップロード AS3.0

Flashに関してはさっぱりなので何から手を付けるべきかよくわかりませんが、
とりあえずフラッシュを通してPHPを動かし、ファイルをアップロードしてみます。

基本的ですがボタンの構造から

インスタンス名.addEventListener(MouseEvent.CLICK, 呼び出す関数);
function 関数名(e:Event):void{
  //実行する内容
}

addEventListenerでインスタンスに対しどんなイベントをもたせるかを指定するわけですね

「e:Event」にはMouseEventの情報が格納されているそうです

とりあえずこちらの記事(http://blog.nipx.jp/archives/4137)を参考に、
マウスでボタンをクリックしたらファイルダイアログを呼び出してPHPと連携したのがこちら

btn_upload.addEventListener(MouseEvent.CLICK, selectFile);

function selectFile(e:Event){
	var file:FileReference	= new FileReference();
	var req:URLRequest	= new URLRequest( "upload.php" );
	file.browse();
	file.addEventListener(Event.SELECT, function( e:Event ):void{
		file.upload( req );
	});
}

イベントリスナを見るとファイル選択時にPHPが呼び出されています。

PHP部分は次のようになっています

<?php
$name = $_FILES[ 'Filedata' ]['name'];
$tmp = $_FILES[ 'Filedata' ]['tmp_name'];
move_uploaded_file( $tmp, "./$name" );
?>

こっちはシンプルですね。
「Filedata」という名前は指定していないですがそう決まってるようです。

このまま設置すると危険すぎるので別途ハッシュチケットのようなものを同時に送信するなどの必要がありそうですが、
どうするのがセオリーなのかまだちゃんと分かってないです。

URLRequestにGETとして渡せばいいんでしょうか。