• 締切済み

角度の求め方

VBAで2つのX,Y座標から角度を求めるにはどのようにしたら良いのでしょうか。 例えばx1=100,y1=100とx2=200,y2=200は45度、というような場合にx1,y2とx2,y2を使って45を求めたいのですが...

みんなの回答

  • 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度なのか判定が必要です。

参考URL:
http://nkiso.u-tokai.ac.jp/phys/matsuura/lecture/dyna/contents/triangle/triangle.asp
  • OsieteG00
  • ベストアンサー率35% (777/2173)
回答No.2

訂正します。 =if((x2-x1)=0,90,ATAN((y2-y1)/(x2-x1))*180/PI())

参考URL:
http://www.moug.net/tech/exopr/0090016.htm
  • OsieteG00
  • ベストアンサー率35% (777/2173)
回答No.1

=if((x2-x1)=0,90,=ATAN((y2-y1)/(x2-x1))*180/PI()

参考URL:
http://www.moug.net/tech/exopr/0090016.htm

関連するQ&A