ベクトル時計回り判定
目次
# 解説
反時計回り、時計回り、同直線上はベクトルの外積を計算することですぐに分かる.
外積が負なら時計回り、0なら同直線上、正なら反時計回り.
同直線上の場合は外積だけではこれ以上は分からない.
内積を計算することで内積が負なら正反対の向き、正なら同じ向きだと判定できる.
# コード
位置ベクトルを2つ受け取り、位置関係を表す整数を返す.
- 0: 反時計回り
- 1: 時計回り
- 2: 正反対
- 3: 同じ方向
int clockwise(Vector2 &v01, Vector2 &v02) {
double cross_ = v01.cross(v02);
if (cross_ > 0.0) return 0;
else if (cross_ < 0.0) return 1;
double dot_ = v01.dot(v02);
if (v01.dot(v02) < 0.0) return 2;
return 3;
}