実際にこの式を見つけましたが、それがどのように機能するかはわかりません。
p,q
とr
を三点とし、
k=(q.y - p.y)*(r.x - q.x)-(q.x - p.x) * (r.y - q.y);
if(k==0): They are all colinear
if(k>0) : They are all clockwise
if(k<0) : They are counter clockwise
誰かがそれがどのように機能するかを説明してくれれば幸いです。
この式は、ベクトルqpとqrの外積を計算するために使用されます。幾何学的な意味のセクションで、交差積値 C = A x B = |A|*|B|*Sin(Theta) を確認できます。ここで、Theta はこれらのベクトル (2 点間の方向) 間の角度です。Sin(Theta) = 平行ベクトルの場合は 0、Theta < 180 の場合は正、それ以外の場合は負。
例:
時計回りのトリプレット ABC: AB ベクトルと AC ベクトルの外積が >0
反時計回りのトリプレット ACD: AC と AD の外積は負です。
これは、2 つの直線の間の角度から求められます。(m1-m2)/1+m1*m2。a、b、c、d の 4 つの点を考えて、c と d が ab 線の同じ側または反対側にあることを知りたいとします。ab と ac の間の角度と ab と ad の間の角度の符号が反対の場合、それらは反対側にあり、そうでない場合は同じ側にあります。上記の式を使用して、見つけた式に到達できます。