• ベストアンサー

三角関数についてですが

わかる方いたらお教え願います。 VB6でプログラムしてるのですが、テキストファイルから中心点と座標を取得し、 その角度を求めたいのですが、全くもってわかりません。 サイン、コサイン、タンジェント??を使うのでしょうか?VB6で使えるのでしょうか? 例えば、中心点がX20.0Y50.0で、ある座標がX200.0Y300.0の場合、 X180.0Y250.0の直角三角形となって、中心点への角度を求めたいのです。 説明が下手ですが、お分かりになられた方、教えて下さい。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

どことどこの角度を知りたいのでしょう? 中心(20,50) と 点(180,250)からなる線分の角度ですか それならば Atn関数で求められますよ Atnは 垂直/水平の比を与えてやればラジアンで返してきます dim ans as double ans = Atn( (250-50) / (180-20) ) 度に直すなら 度= 180/π * ラジアンで変換できます 45度がπ/4ですので Atn(1)*4 がπになります ans2 = Atn( ( 250 - 50 ) / ( 180 - 20 ) ) * 180 / ( ATn(1) * 4 ) といった具合です 求める部分が違うなら補足説明をしてください 中心とある座標と直角三角形の関係がいまいち分かりません

satoshi777
質問者

お礼

おはようございます。 あらためて見ると、非常にわかりにくい文でした。 申し訳ありませんでした。 聞きたいことは、ズバリredfox63さんの答えの部分でした。 数学が苦手なもので、伝えることもままならぬ状況でしたが、 解決できました。ありがとうございます。

その他の回答 (1)

回答No.1

Option Explicit 'http://u-sfield.hp.infoseek.co.jp/vb/tips/pi.html Public Function Pi() As Double Pi = 4 * Atn(1) 'π=アークタンジェント(1)×4 で算出できます。 End Function Public Function hoge(ox As Double, oy As Double, x As Double, y As Double) As Double hoge = Atn((y - oy) / (x - ox)) End Function Public Function main() MsgBox ( _ CStr(hoge(20, 50, 200, 300)) & "[rad]" & vbNewLine & _ CStr(hoge(20, 50, 200, 300) * 180 / Pi()) & "[°]" _ ) End Function

satoshi777
質問者

お礼

おはようございます。 参考とさせていただきます。ありがとうございました。