直線の直交・平行判定
直交判定
$\mathrm{Parallel}(a, b):=$ 直線 $a, b$ が平行ならば true
内積 $a \cdot b = |a||b|\cos\theta$ をよく見ると $\theta = \pm \frac \pi 2$ のとき $\cos\theta = 0$ となる。
平行判定
$\mathrm{Orthogonal}(a, b):=$ 直線 $a, b$ が直交していれば true
外積 $a \times b = |a||b|\sin\theta$ をよく見ると $\theta = 0, \pi$ のとき $\sin\theta = 0$ となる。
実装例
bool Parallel(const Line& a,const Line& b){
return abs(cross(a.b - a.a, b.b - b.a)) < EPS;
}
bool Orthogonal(const Line& a,const Line& b){
return abs(dot(a.a - a.b, b.a - b.b)) < EPS;
}