- 148 名前:名前は開発中のものです。 [2006/06/20(火) 21:54:59 ID:q3QYoQKK]
- >>147
// 面と線の交点を求める VectorMultiply( &a, &a, t); VectorAdd( pos, &a, &begin); // 0 = < t = < 1 以外の場合、交差していないので抜ける if ( t < 0.0f || t > 1.0f) return false; // 三角形内外判定 for ( int i = 0; i < 3; i++) { // 外積を利用して内外判定 VECTOR pn, p1, p2; VectorSub( &p1, &v[((i+1)==3) ? 0: i+1], &v[i]); VectorSub( &p2, pos, &v[i]); CrossVector( &pn, &p1, &p2); // 法線の方向判定用 pn.x = pn.x * n.x; pn.y = pn.y * n.y; pn.z = pn.z * n.z; // すべての場合の法線が同一方向ならば、p は三角ポリゴン内に存在する if ( (pn.x < -0.001) || (pn.y < -0.001) || (pn.z < -0.001)) return false; } // ここまで来たら交点有り return TRUE; }
|

|