aoj 幾何 cgl_2_a

CGL_2_A Parallel/Orthogonal

CGL_2_A Parallel/Orthogonal
Feb. 2, 2020, 1:52 p.m.

目次

問題

http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=CGL_2_A

解説

ベクトルの内積と外積を使ってベクトル同士の平行・垂直関係を求める問題.
内積が0なら垂直、外積が0なら平行.

  • $V \cdot U = 0 \Leftrightarrow V \perp U$
  • $V \times U = 0 \Leftrightarrow V \parallel U$

ちなみに内積の絶対値がベクトルの大きさの積に等しければ平行ともいえる.

  • $|V \cdot U| = |V| \times |U| \Leftrightarrow V \parallel U$

解答

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
#define MAX_N 1001
Int N;
Vector2 a, b, c, d;

void input() {
  cin >> N;
  loop(n,0,N) {
    cin >> a >> b >> c >> d;
    a = b - a;
    c = d - c;
    if (a.parallel(c)) cout << 2 << endl;
    else if (a.orthogonal(c)) cout << 1 << endl;
    else cout << 0 << endl;
  }
}

int main() {
  input();
}