Flash 3Dインターフェースのサンプル


● 3次元座標をスクリーン上のスケールに置き換える


● サンプルファイルのダウンロード 3D_sample.zip
※ 右クリックで「対象をディスクに保存...」でダウンロードしてください


● 3次元座標をスクリーン上の座標に変換する関数


/********************************************************************************
	関数名		ObjectToScreen
	機能		3Dオブジェクトの透視投影後のポジションやサイズを取得する
	
	入力		iX			3DオブジェクトX座標
				iY			3DオブジェクトY座標
				iZ			3DオブジェクトZ座標
				iFocus		視点距離
				iCenterX	消滅位置(省略するとステージ中央)
				iCenterY	消滅位置(省略するとステージ中央)
	出力		iScreenX	スクリーンX座標
				iScreenY	スクリーンY座標
				iScale		スケール
********************************************************************************/
function ObjectToScreen(iX:Number, iY:Number, iZ:Number, iFocus:Number, iCenterX:Number, iCenterY:Number){

	var iScreenX, iScreenY, iScale;
	
	// センター位置が未指定の場合

	if(iCenterX == "" || iCenterY == "" || iCenterX == undefined || iCenterY == undefined ){
		iCenterX = Stage.width / 2;
		iCenterY = Stage.height / 2;
		
	}
	
	// スケールを算出する
	iScale = iFocus / (iFocus + iZ);
	
	// 座標を算出する
	iScreenX = iX * iScale + iCenterX;
	iScreenY = iY * iScale + iCenterY;
	
	iScale = Math.abs(iScale) * 100;
	oReturnData = new MyPositionData(iScreenX, iScreenY, iZ, iScale);
	
	return oReturnData;
}

関連サイト:
アナログ系プログラミングでいこう バックナンバー

SCRIPT by Kazuhisa Suzuki ( http://c61.org )