ページ 1 / 1
ある点を基準したある点への角度
Posted: 2011年5月10日(火) 17:55
by はんなり
ある点を基準したある点への角度がわかりません。
グーグルで小一時間試行錯誤しましたが、ダメでした。
公式など知ってる方いらっしゃれば教えてください。
おねがいします。
Re: ある点を基準したある点への角度
Posted: 2011年5月10日(火) 18:06
by softya(ソフト屋)
アーク・タンジェントですよ。
Re: ある点を基準したある点への角度
Posted: 2011年5月10日(火) 18:10
by はんなり
すみません。
こういっちゃアレですが、
高校で習ってません・・・m(_ _)m
※追記
高校ではサインとコサインしか習いませんでした。。。
Re: ある点を基準したある点への角度
Posted: 2011年5月10日(火) 18:28
by softya(ソフト屋)
tan(タンジェント)は分かりますか?
Re: ある点を基準したある点への角度
Posted: 2011年5月10日(火) 18:41
by はんなり
むしろサインとコサインもあまり理解できてませんが、
プログラミングでは使っています。
コントローラーの使い方は分かるけど、
構造は分からないみたいな感覚です。
Re: ある点を基準したある点への角度
Posted: 2011年5月10日(火) 18:49
by たかぎ
原点を中心とした角度ということであれば、極座標なら簡単ですね。
点A (r1, θ1)と点B (r2, θ2)の角度であれば、θ2 - θ2でOKですね。
直交座標から極座標を求めるには...
直交座標が(x, y)であれば、極座標は((x2 + y2)1/2, arctan(y/x))になります。
Re: ある点を基準したある点への角度
Posted: 2011年5月10日(火) 19:02
by softya(ソフト屋)
まぁ、深い意味は理解しなくても良いので、下記を見てください。
http://ja.wikipedia.org/wiki/%E4%B8%89% ... 2%E6%95%B0
tanは直角三角形のa/bの値を求めることが出来る関数だと理解してもらえば良いです。
atanはtanの逆数ですのでa/bの値から角度を求める事ができます。
ただし、bが0だと割り算例外を起こすのでatanしないようにガードしてください。
Re: ある点を基準したある点への角度
Posted: 2011年5月10日(火) 19:25
by はんなり
50,150を基準として、
ある点をマウスの座標にし、
ぐるぐると基準の周りを回してみたのですが
値は小数点単位で見ても1~-1程度しか動きませんでした。
コードを貼ってみます。
コード:
double System::angle(double x,double y){
if(x!=0) return atan(y/x);
return -9999;
}
以下は呼び出すときです。
mx,myはint型でマウスの座標を示しています。
anはdouble型です。
コード:
an=angle(50-mx,150-my);
なんかおかしいところはありますでしょうか?
Re: ある点を基準したある点への角度
Posted: 2011年5月10日(火) 20:21
by はんなり
atan2fという関数を使って解決しました。
ありがとうございましたm(_ _)m
Re: ある点を基準したある点への角度
Posted: 2011年5月10日(火) 20:22
by h2so5
はんなり さんが書きました:50,150を基準として、
ある点をマウスの座標にし、
ぐるぐると基準の周りを回してみたのですが
値は小数点単位で見ても1~-1程度しか動きませんでした。
正常な結果です。
atan関数の仕様を調べてみてください。