線分どうしが交差するかどうかを判別する手順メモ
p0:直線0の座標
v0:直線0のベクトル
p1:直線1の座標
v1:直線1のベクトル
計算用分母をもとめ交差するかどうかを判別する
bunbo = v0.x * v1.z - v0.z * v1.x
if( bunbo == 0.0 )
{
交差しません
return
}
ベクトルp0-p1を求める
vec = p1 - p0
直線のベクトルで進んだ場合における交差する時間を取得できます。
t0 = ( v1.z * vec.x - v1.x * vec.z) / bunbo
t1 = ( v0.z * vec.x - v0.x * vec.z) / bunbo
線分と線分の交差判定が行いたい場合はこで計算終了
時間が0以上1以内の判別で交差判定を行える
if( 0.0f<=t0 && t0<=1.0f && 0.0f<=t1 && t1<=1.0f )
{
線分内で交差
}else
{
線分外で交差
}
直線の場合はさらに交差座標を求めたい場合があるはずその場合は以下の式で終了
交点q0 q1をもとめることができます。
q0 = v0 * t0 + p0
q1 = v1 * t1 + p1
おしまい