• ベストアンサー

角度を求めるプログラム

wp_の回答

  • wp_
  • ベストアンサー率54% (132/242)
回答No.4

ここまでくると数学の問題ですな^^; >度数からx,yの値を求める方法をご存知でしたら教えてもらえないでしょうか? 普通に度数をラジアン単位に直し、sin()やcos()をかませば求められますよ。 幸いにもphpにはラジアン単位に直す関数があるので利用すると良いかと。 まにゅある deg2rad() http://jp.php.net/deg2rad ただ、ラジアン単位だけでは正弦・余弦の値しか求められないので、 座標を求めると言う意味では一次結合で使うような係数が必要かと思われます。

takagoo100
質問者

お礼

ご返答ありがとうございます。 たしかに完全に数学ですね・・・ 早速試してみたのですが、sinをy、cosをxとみなして調べてみたら理想とする結果がでてきました。 ただ90度、180度、270度の時に無限と思われる値がでてきて >度数=90 x=6.12303176911E-17 y=1 >度数=180 x=-1 y=1.22460635382E-16 >度数=270 x=-1.83690953073E-16 y=-1 これをなんとかして0にできないかと試したのですが無理でした・・・ 下が例ですが、 for ($i = 0; $i < 360; $i++) { $a = deg2rad($i); $c = cos($a); $s = sin($a); // if (is_infinite($s)){ $s = 0; } // if (is_infinite($c)){ $c = 0; } if ($c < -1 || 1 < $c){ $c = 0; } if ($s < -1 || 1 < $s){ $s = 0; } print "度数={$i} x={$c} y={$s}<br>\n"; } is_infinite関数や-1より下または1より上でのチェックが効きません・・・ この場合の数のチェックは何を使えば良いのかご存知でしょうか?

関連するQ&A

  • 2線の交わる角度を求める式

    2線の交わる角度を求める式で、0での除算が発生しない方法を教えて下さい。 座標 線a ax1 = 0 , ay1 = 0 : ax2 = 12 , ay2 = 13 線b bx1 = 6 , by1 = 15: bx2 = 6 , by2 = 2 A=(y13-y0)/(x12-x0) B=(y2-y15)/(x6-x6)   0で除算が発生 2線の交わる角度 tanθ=(A-B)/(1+AB) 片方の線が垂直だと0で除算が発生しまい、うまく計算できません。 なにか他によい方法はないでしょうか。

  • 角度が求められません。

    角度が求められません。 以下の図(見づらくてすみません。数字は度数を表しています)において,xの角度を求めたいのですが、求めることができません。 アドバイスお願いします。 ※三角形ABCは頂角Aが20度の二等辺三角形  三角形BCDは頂角Bが80度の二等辺三角形  三角形EABは頂角Bが140度の二等辺三角形 ということがわかります。

  • 二点の座標から距離や角度を求めたいのですが、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度です)

  • 内積の定義を用いた三角形の角度の求め方について

    http://www.sousakuba.com/Programming/gs_two_vector_angle.html 上記のページを参考に三角形の角度を求めるプログラムを作りたいのですが、 理解出来ないので質問させて頂きました。 Vector2には、xとyの座標位置がそれぞれ格納されているかと思いますが、 計算で使われている座標はベクトルAとベクトルBの2点の座標のみのように思うのですが、 なぜ、ベクトルAとベクトルBの交点の座標は使わずに三角形の角度が計算できるのでしょうか? ベクトルAとベクトルBの座標位置は(0,0)という単純な話なのでしょうか?

  • 角度が求められません(再投稿)

    角度が求められません(再投稿) 以下の図(見づらくてすみません。数字は度数を表しています)において,xの角度を求めたいのですが、求めることができません。 アドバイスお願いします。 ※三角形ABCは頂角Aが20度の二等辺三角形  三角形BCDは頂角Bが80度の二等辺三角形  三角形EABは頂角Bが140度の二等辺三角形 ということがわかります。

  • 楕円計算で困っています

    長径2a、短径2bの楕円があり、長軸と短軸の交点座標(いわゆる中心点)を(0,0)とする この中心点からx軸からの角度αで直線を引き、楕円との交点座標を(x1,y1)とし、 また、この座標がx軸に対して対称な座標を(x1,-y1)とする この2点に対して楕円の接線を引いて、2つの線の角度をβとする この条件で(x1,y1)座標と角度βを、a,b,角度αを用いて表現する方法はないでしょうか? 色々考えてみたのですがどうも上手くいきません。 どうかよろしくお願いします。

  • 角度の求め方

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

  • 角度を求めたい。

    x,yの角度を求めたいです。円の半径が4000m、aの角度が20度、bの角度が20度です。

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

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