2点を通る直線の角度を求める
P1 (x1, y1)・P2 (x2, y2) の2点を通る直線の角度 θ を求めます。
まず、X方向・Y方向それぞれの変位を求めます。
// Cの場合です
dx = x2 - x1;
dy = y2 - y1;
Yの変位をXの変位で割ったもののアークタンジェントが求める角度(ラジアン、-π≦θ≦π)となります。ただし、これではXの変位が0の場合に0除算が発生してしまうので、分岐してやる必要があります。言語によっては関数側でXの変位が0でも適切に返してくれる関数が用意されていたりします。
// Cの場合は atan2 関数という、Xの変位とYの変位を引数に取って内部で判断してくれる関数があります。 rad = atan2 (dy, dx); ' VBでは、自分で判断しなければなりません Pi = Atn (1#) * 4# Select Case (dx) Case 0# If (dy) Then theta = (Sgn (dy) * Pi) / 2# Else theta = 0# End If Case Is < 0# If (dy) Then theta = (Sgn (dy) * Pi) + Atn (dy / dx) Else theta = Pi End If Case Else theta = Atn (dy / dx) End Select ! FORTRAN はCと同じです theta=ATAN2(dy,dx)
トラックバック
- このエントリーにトラックバック:
- http://frog.raindrop.jp/cgi-bin/mt/mt-tb.cgi/1612
コメント