- 締切済み
角度の求め方
VBAで2つのX,Y座標から角度を求めるにはどのようにしたら良いのでしょうか。 例えばx1=100,y1=100とx2=200,y2=200は45度、というような場合にx1,y2とx2,y2を使って45を求めたいのですが...
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- chie65536
- ベストアンサー率41% (2512/6032)
回答No.3
http://nkiso.u-tokai.ac.jp/phys/matsuura/lecture/dyna/contents/triangle/triangle.asp このページに書いてある「タンジェントの逆関数」があれば、角度を求められます。 つまり kakudo = atn((x2-x1)/(y2-y1)) となります。 なお、上記だけでは-90度~90度までしか判りません。割り算なので「100/100と-100/-100」、「-100/100と100/-100」が同じ値になって区別できません。つまり、45度と225度、135度と315度の区別が付きません。 ですので、x1とx2、y1とy2のそれぞれの大小関係で場合分けし、別々に角度を求める必要があります。 但し、y1とy2が一致する時は「0で割算エラー」が出るので、atn関数は使えません。y1とy2が一致した場合はatn関数を呼ばずにx1とx2の大小関係を見て「0度」「2点が同一座標」「180度」の3通りに判定するようにします。 また、x1とx2が一致した場合、引数の「(x2-x1)/(y2-y1)」が0になってしまい、90度なのか270度なのか判らなくなります。その場合もy1とy2の大小関係を見て90度なのか270度なのか判定が必要です。