ある点を基準したある点への角度

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
アバター
はんなり
記事: 48
登録日時: 14年前

ある点を基準したある点への角度

#1

投稿記事 by はんなり » 14年前

ある点を基準したある点への角度がわかりません。

グーグルで小一時間試行錯誤しましたが、ダメでした。

公式など知ってる方いらっしゃれば教えてください。
おねがいします。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: ある点を基準したある点への角度

#2

投稿記事 by softya(ソフト屋) » 14年前

アーク・タンジェントですよ。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
はんなり
記事: 48
登録日時: 14年前

Re: ある点を基準したある点への角度

#3

投稿記事 by はんなり » 14年前

すみません。
こういっちゃアレですが、
高校で習ってません・・・m(_ _)m

※追記
高校ではサインとコサインしか習いませんでした。。。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: ある点を基準したある点への角度

#4

投稿記事 by softya(ソフト屋) » 14年前

tan(タンジェント)は分かりますか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
はんなり
記事: 48
登録日時: 14年前

Re: ある点を基準したある点への角度

#5

投稿記事 by はんなり » 14年前

むしろサインとコサインもあまり理解できてませんが、
プログラミングでは使っています。

コントローラーの使い方は分かるけど、
構造は分からないみたいな感覚です。

たかぎ
記事: 328
登録日時: 14年前
住所: 大阪
連絡を取る:

Re: ある点を基準したある点への角度

#6

投稿記事 by たかぎ » 14年前

原点を中心とした角度ということであれば、極座標なら簡単ですね。
点A (r1, θ1)と点B (r2, θ2)の角度であれば、θ2 - θ2でOKですね。

直交座標から極座標を求めるには...
直交座標が(x, y)であれば、極座標は((x2 + y2)1/2, arctan(y/x))になります。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: ある点を基準したある点への角度

#7

投稿記事 by softya(ソフト屋) » 14年前

まぁ、深い意味は理解しなくても良いので、下記を見てください。
http://ja.wikipedia.org/wiki/%E4%B8%89% ... 2%E6%95%B0

tanは直角三角形のa/bの値を求めることが出来る関数だと理解してもらえば良いです。
atanはtanの逆数ですのでa/bの値から角度を求める事ができます。
ただし、bが0だと割り算例外を起こすのでatanしないようにガードしてください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
はんなり
記事: 48
登録日時: 14年前

Re: ある点を基準したある点への角度

#8

投稿記事 by はんなり » 14年前

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);
なんかおかしいところはありますでしょうか?

アバター
はんなり
記事: 48
登録日時: 14年前

Re: ある点を基準したある点への角度

#9

投稿記事 by はんなり » 14年前

atan2fという関数を使って解決しました。
ありがとうございましたm(_ _)m

アバター
h2so5
副管理人
記事: 2212
登録日時: 14年前
住所: 東京
連絡を取る:

Re: ある点を基準したある点への角度

#10

投稿記事 by h2so5 » 14年前

はんなり さんが書きました:50,150を基準として、
ある点をマウスの座標にし、
ぐるぐると基準の周りを回してみたのですが
値は小数点単位で見ても1~-1程度しか動きませんでした。
正常な結果です。
atan関数の仕様を調べてみてください。

閉鎖

“C言語何でも質問掲示板” へ戻る