< 2点間の距離を求める | 弧度法(-π≦θ≦π)で表された角度を変換する >

September 25, 2006

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

コメント

コメントする

※ コメントスパム対策のため、コメント本文はおはよう、こんにちわ、こんばんわのいずれかより始めるようにしてください。

name:
email:

※ 必要ですが、表示しません。

url:
情報を保存する ?