S ≡ (Px - Cx) * (Qy - Cy) - (Py - Cy) * (Qx - Cx) とする.S>0 なら左回り,S<0 なら右回り,S=0 ならば C,P,Q は一直線上にある.(注) なお,この判別方法は,CP と CQ が同じ長さである必要はない. θを求めたい場合はこちらへ. この問題を見て,逆三角関数 tan-1 (C言語では atan() や atan2()) を使って CP と CQ の角度をそれぞれ求め, 両者を比較しようと考えた方が多いのではないでしょうか. しかしこの問題では,角度そのものではなく角度差の符号を求めればよいので, 逆三角関数を使う方法よりも簡単で優れた,外積を使う方法を紹介します. 2つの2次元ベクトル A=(Ax, Ay), B=(Bx, By) の外積を次のように定義する. A × B ≡ Ax * By - Ay * Bx ここで O
![3点の座標から簡単に角度と回転方向を求める.(2・3・N次元,外積を用いる方法)](https://cdn-ak-scissors.b.st-hatena.com/image/square/188991e8d19f9f68ecd4f808fbbc8830702917fe/height=288;version=1;width=512/http%3A%2F%2Fwww5d.biglobe.ne.jp%2F~noocyte%2FProgramming%2FGeometry%2FRotationDirection%2FAtan2CrossDot-s.gif)