• ベストアンサー

位置座標からx軸となす角度(ラジアンでも可)を求める方法

簡単な2次元座標系で現在の位置が(x,y)だとします。 この点を三角関数を用いて表したときに x=m+r*cos a y=n+r*sin a となると思うんですが((m,n)は円の中心点,rは半径,aはx軸と半径のなす角とします)任意にa以外の変数に値を与えた場合,aを求めるプログラムの書き方が良く分かりません。 いいかえますと2点を結んだ直線とx軸とのなす角度を求めたいというものです。 もちろん角度ではなくラジアンでもかまいません。 どなたかご教授よろしくお願いします。

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

  • ベストアンサー
  • kenipi
  • ベストアンサー率29% (44/150)
回答No.1

三角関数の逆関数を使ってはどうでしょうか? ある点の座標が(x,y)、x軸とのなす角をαとすると、 tan(α)=y/x ですから、 α = atan(y/x) となります。atan はアークタンジェントです。

penginmuranomura
質問者

お礼

ありがとうございます。 数学的な考え方で答えは簡単にでるんですね。 もっと精進していきたいと思います。

関連するQ&A

  • X、α軸で円が移動した時のX、Y軸中心座標その2

    図をつけて同じ質問します。 X軸と、X軸と角度θ(反時計回りが正)にあるα軸平面で、原点を中心とする半径rの円が移動して、X切片がrからr+x1、α切片がrからr+α1になった時、円の中心座標はX軸、Y軸平面で(0,0)からどこに移動するのでしょうか?。 以前同様の質問をして、この場合、X,Y座標で(x、y)=(r+x1、0)、((r+α1)cosθ,(r+α1)sinθ)の2点を通るので、円の方程式(x-p)^2+(y-q)^2=r^2に2点を代入して引き算し、pの2次方程式を解いて、p、qを求めれば良いと教えてもらいました。 しかし何度方程式を解いても作図した正解と答えが一致しません。誰か方程式を解いてみてくれませんでしょうか?。または他の方法を教えてください。 よろしくお願いします。 ちなみに私が上記方法でpの2次方程式を解くと、 A=r+x1,B=r+α1として、    ap^2+bp+c=0 a=1+(4A^2-8ABcosθ+4B^2cosθ^2)/(2Bsinθ)^2 b=-2A+4{-A^3+BA^2cosθ+AB^2-B^3cosθ}/(2Bsinθ)^2 c=A^2+(A^4-2A^2B^2 +B^4)/(2Bsinθ)^2-r^2 になりました。よって p=(-b±√(b^2-4ac))/2a q=(2Ap+B^2-A^2)/2B になります。しかしこの答えは作図して確認すると正しくないようです。 よろしくお願いします。

  • X、α軸で円が移動した時のX、Y軸中心座標

    X軸と、X軸と角度θ(反時計回りが正)にあるα軸平面で、原点を中心とする半径rの円が移動して、X切片がrからr+x1、α切片がrからr+α1になった時、円の中心座標はX軸、Y軸平面で(0,0)からどこに移動するのでしょうか?。 以前同様の質問をして、この場合(x、y)=(r+x1、0)、((r+α1)cosθ,(r+α1)sinθ)の2点を通るので、円の方程式(x-p)^2+(y-q)^2=r^2に2点を代入して引き算し、p、qを求めれば良いと教えてもらいました。 しかし何度方程式を解いても作図した正解と答えが一致しません。誰か方程式を解いてみてくれませんでしょうか?。 よろしくお願いします。  

  • 重積分を使って重心を求める問題

    2次元平面上の直交座標系をx、yとし、原点から点(a,b)までの距離をr、原点と点(a,b)を結ぶ直線とx軸の正の方向とがなす角度を反時計回りの孤度法ではかった角度をθとする。 このとき曲線 r=a(1+cosθ) a>0 によって囲まれる領域の重心のx座標を求めよ という問題なんですが まずr=a(1+cosθ)によって囲まれる面積を求めてそのあと二重積分を使って求めるということはわかるのですがr=a(1+cosθ)によって囲まれる面積の出し方がわかりません? 面積を求める方法を教えてくれませんか?

  • x,y座標から角度の差、大きさの差の求め方について

    角度=315度 大きさ=43.8 角度=313.794度 大きさ=43.4 の角度の差、大きさの差をX,Y座標で求めた場合 X1=43.8×cos315=30.971 Y1=43.8×sin315=-30.971 X2=43.4×cos313.794=30.036 Y2=43.4×sin313.794=-31.32754 x,y座標から角度の差、大きさの差の求め方について ご教示いただけますでしょうか?

  • 三次元座標の回転角度

    左手系三次元座標A(X,Y,Z)がB(x,y,z)に移動したとき、原点からみたZ軸の回転角度Θの算出は、 Θ=Atan(y/x)-Atan(Y/X) でいいですか。よろしくお願いします。

  • 二点の座標から距離や角度を求めたいのですが、Matlab

    こんにちは、Matlabの初心者ですがよろしくお願いします。 ある座標、たとえば、A(x1, y1) B(x2, y2)があったとして、 この二点間の距離は、 sqrt((x2-x1)^2 + (y2-y1)^2) だと思いますが、もっと簡潔に求めることができる関数とかが導入されていたりしないかと思いました。AやBを定義しておいて、AとBだけを使うことができないかと思いました。 また、この二点を通る直線とX軸とがなす角度は、 atan(sqrt((y2-y1)^2)/sqrt((y2-y1)^2)) で求められるかと思いますが、これも同様にもっと簡潔な方法がないかと思いました。 いかがでしょうか。よろしくお願いします。

  • 二点の座標から角度を求めるには?

    2点の座標A,Bの角度を求めたいのですが,たとえばA点(0,0)とB点(4,3)を結ぶラインは、底辺Bxと高さByを元に三角関数?から30度と求められますが、B点がマイナス座標が絡んできた場合などの90度から359度までをどう求めていいか悩んでいます。また、A点も(0,0)に限定されるわけではないので、ますます混乱しています。どう考えればよいのか教えていただきたいのですが (水平はX軸プラス方向が0度です)

  • 3次元空間におけるアフィン変換について

    3次元空間で直線を軸とした回転運動している物体の座標の特定をしたいと考えています。 最終的にX、Y、Z軸を軸とする回転角度を得ることができればと思っています。 具体的に以下のような数学の問題があったとして、 どう解いていくかを経緯も含めて教えていただきたいのです。 [設問] 3次元空間に点A(x,y,z) = (0,0,0)と点B(100,-100,100)の2点がある。 また直線ABに含まれない点C(50,-50,0)がある。 点Cを含み直線ABに直交する平面と直線ABとの交点をDとし 点Cが線分CDを半径として当該平面上の円を一定の速度で回転している。 このとき点Cの円周上の回転角度をaとする時、 点Cのx、Y、Z軸それぞれを軸とした回転角度をaを用いて表しなさい

  • 角度から円の座標を求めるには?

    x軸をベースに、原点からの角度によって、座標を求めたいのですが、どのように計算すればいいのでしょうか? 例) x軸に対し、上方向に 30度の直線を引きたいとき

  • 3次元の座標変換と角度について。

    3次元のシミュレーションの勉強をしています。 3次元の座標変換で x,y,z:変換前の座標; x',y',z':変換後の座標; θ:回転する角度; lx,ly,lz:平行移動量; としたとき、 X軸に関する回転              |1 0   0    0|              |0 cosθ sinθ 0| [x' y' z' 1] = [x y z 1]|0 -sinθ cosθ0|              |0 0   0   1| Y軸に関する回転              |cosθ0 -sinθ0|              |0   1 0   0| [x' y' z' 1] = [x y z 1]|sinθ0 cosθ 0|              |0   0 0   1| Z軸に関する回転              |cosθ sinθ 0 0|              |-sinθcosθ0 0| [x' y' z' 1] = [x y z 1]|0   0   1 0|              |0   0   0 1| 平行移動              |1 0 0 0|              |0 1 0 0| [x' y' z' 1] = [x y z 1]|0 0 1 0|              |lx ly lz 1| 物体の姿勢を表現するときは [物体の姿勢の変換行列] = [Z軸の回転行列][X軸の回転行列][Y軸の回転行列][平行移動]  |XX XY XZ 0| XX,XY,XZ・・・X軸の単位ベクトルを変換した場合のベクトル  |YX YY YZ 0| YX,YY,YZ・・・Y軸の単位ベクトルを変換した場合のベクトル = |ZX ZY ZZ 0| ZX,ZY,ZZ・・・Z軸の単位ベクトルを変換した場合のベクトル  |LX LY LZ 1| LX,LY,LZ・・・平行移動量ベクトル というのは分かるのですが、 X軸、Y軸、Z軸の単位ベクトルを変換した後のベクトルから X軸、Y軸、Z軸にそれぞれ何度ずつ回転させたかを求めるにはどのようにすればよいのでしょうか? つまり、X軸に対して30度、Y軸に対して45度、Z軸に対して60度回転させた後の |XX XY XZ 0| |YX YY YZ 0| |ZX ZY ZZ 0| |LX LY LZ 1| の値からX軸に対して30度、Y軸に対して45度、Z軸に対して60度回転している事を導きたいのです。 分かる方教えてください。 お願いします。 (質問に関して、 http://www.ceres.dti.ne.jp/~ykuroda/oyaj/bone/basic3d.html を参考にさせていただきました。)

専門家に質問してみよう