/*

	obl_trap.h                     

	    斜め検査proc



	2000/10/16 Y.Matsuhana         

	$Id: obl_trap.h,v 1.2 2000/12/18 03:50:40 usr00725 Exp $                      



	

*/





// 任意４角形トラップPROC

// 

// 使用方法：

// 指定通りに引数を入力すると、A点からD点までを結ぶ四角形に対して、

// プレイヤー位置が中にいるか外にいるかを検査できる。頂点は時計回りに指定する。

// $f:ポリトラップ結果 が、負数なら外側/０なら線上/正数なら内側

// 大きく４頂点を囲む通常のトラップを引き、"いる"で毎割り込みこのポリトラップで検査する

// ----------------------------------------------------

	proc ポリトラップ $:プレイヤーＸ位置 $:プレイヤーＺ位置 $:斜めドアＡ点Ｘ座標 $:斜めドアＡ点Ｚ座標 $:斜めドアＢ点Ｘ座標 $:斜めドアＢ点Ｚ座標 $:斜めドアＣ点Ｘ座標 $:斜めドアＣ点Ｚ座標 $:斜めドアＤ点Ｘ座標 $:斜めドアＤ点Ｚ座標{

		eval( $i:外積結果ＡＢ = ( $:斜めドアＢ点Ｘ座標 - $:斜めドアＡ点Ｘ座標 )*( $:プレイヤーＺ位置 - $:斜めドアＡ点Ｚ座標 )-( $:プレイヤーＸ位置 - $:斜めドアＡ点Ｘ座標 )*( $:斜めドアＢ点Ｚ座標 - $:斜めドアＡ点Ｚ座標 )) ;

		eval( $i:外積結果ＢＣ = ( $:斜めドアＣ点Ｘ座標 - $:斜めドアＢ点Ｘ座標 )*( $:プレイヤーＺ位置 - $:斜めドアＢ点Ｚ座標 )-( $:プレイヤーＸ位置 - $:斜めドアＢ点Ｘ座標 )*( $:斜めドアＣ点Ｚ座標 - $:斜めドアＢ点Ｚ座標 )) ;

		eval( $i:外積結果ＣＤ = ( $:斜めドアＤ点Ｘ座標 - $:斜めドアＣ点Ｘ座標 )*( $:プレイヤーＺ位置 - $:斜めドアＣ点Ｚ座標 )-( $:プレイヤーＸ位置 - $:斜めドアＣ点Ｘ座標 )*( $:斜めドアＤ点Ｚ座標 - $:斜めドアＣ点Ｚ座標 )) ;

		eval( $i:外積結果ＤＡ = ( $:斜めドアＡ点Ｘ座標 - $:斜めドアＤ点Ｘ座標 )*( $:プレイヤーＺ位置 - $:斜めドアＤ点Ｚ座標 )-( $:プレイヤーＸ位置 - $:斜めドアＤ点Ｘ座標 )*( $:斜めドアＡ点Ｚ座標 - $:斜めドアＤ点Ｚ座標 )) ;

		eval( $i:ポリトラップ結果 = ( $i:外積結果ＡＢ | $i:外積結果ＢＣ | $i:外積結果ＣＤ | $i:外積結果ＤＡ )) ;

		return $i:ポリトラップ結果;

	}

