アプリ版:「スタンプのみでお礼する」機能のリリースについて

正円の半径と角度がわかっている状態で、円周上のx座標、y座標を求めることは可能でしょうか?
たとえば、半径=150の場合、0度なら(150,0)、90度なら(0,150)、180度なら(300,0)、270度なら(0,-150)
となりますが、1度、2度…といった、直角でない角度の場合にどのように遷移してゆくか、解りません。
0度から360度までの座標を追ってゆく必要があるのですが、お手上げ状態です。
三角関数で解けるとは思うのですが、高校時代の数学がさっぱりで、色々な本を読んでも計算方法が解りません。
ここの質問もいくつも目を通しましたが、πやラジアンが具体的にどんな数値なのか…が判然としなくて、解けないのです。

もし、噛み砕いて解説可能なかた、いらっしゃいましたらお教えいただけますと助かります。
何卒、よろしくお願い申し上げます。

A 回答 (7件)

#2です。



> どうしてもsin,cosでやるなら、自分で360度分、ファイルかなにかで持つべき・・・になりそうですね。

それが良いと思います。
どれくらいの精度が必要なのかと、容量との兼ね合いで、3600個(0.1度刻み)になるのか、360個(1度刻み)になるのか、72個(5度刻み)になるのかが決まると思いますけど。

sinとcosには、cosθ=sin(θ+90°) ⇔ sinθ=cos(θ-90°) という関係があります。
これを利用すれば、sin用のデータかcos用のデータのどちらか一方を用意するだけで、sinの値もcosの値も求めることができます。
用意するデータは 0°≦θ<360°の範囲内だけだと思うので、角度の計算結果がそこから外れた場合は、360°を足すか引くかして、範囲内に補正する必要があります。

頑張ってください。
    • good
    • 0

#2です。



cosθ、sinθそのものは、数値では出せないと思っておいたほうが良いでしょうね。

かなり大雑把でも良いのであれば、0°、30°、45°、60°、90°での値は解っているわけですから、それぞれを基準にして補完するという手もありますね。

sin0°=0
sin30°=1/2=0.5
sin45°=√2/2=0.707
sin60°=√3/2=0.866
sin90°=1

0°<θ<30°の場合:
sinθ=(0.5-0)÷(30°-0°)×(θ-0°)+0

30°<θ<45°の場合:
sinθ=(0.707-0.5)÷(45°-30°)×(θ-30°)+0.5

そのほかの範囲も同様に。
cosも同様に。

そもそも、cos関数やsin関数を利用できない環境で、計算式を作る必要がある状況というものが、想像つかないのですが・・・

具体的に、どういう環境・状況で、何のために、どんな数式を作る必要があるのかが解れば、他に何か良い案が見つかるかもしれませんが・・・
    • good
    • 0
この回答へのお礼

ご解答を感謝致します。
自作仕様のプログラムなので、あまり複雑なことができないのです…
数値で出せないと解っただけでも、一歩前進です。
どうしてもsin,cosでやるなら、自分で360度分、ファイルかなにかで持つべき・・・になりそうですね。
C言語などの内部関数はどうやって出しているのか気になります。

本当にありがとうございました!

お礼日時:2008/09/30 16:25

ラジアンは角度の表し方のひとつです。

単位を書く場合は[rad]です。

 360°が2πですので 
   180°= π[rad]≒3.14 [rad]
    90°=π/2[rad]≒1.57[rad]
    60°=π/3[rad]≒1.05[rad]

   230°=2π*230/360[rad]≒4.014[rad]

   1[rad]=1*360/2π≒ 57.3°
   2[rad]=2*360/2π≒114.6°
 
などとなります。
 ある角度の扇形の弧の長さを半径で割ったものです。半径の長さが1のときは弧長がラジアンで表した角度になります。半径1センチの扇形で弧の長さが2ならば角度は約114.6°、2[rad]というわけです。


 0度から360度までの座標を1度づつ追ってゆかれるのであればniousさんが書かれている式を使うしかありません。おおまかでいいのであれば、大き目のグラフ用紙に円を描いて分度器で点をつけて中心から線を引いて円との交点の目盛を直接読むのはどうでしょう。
    • good
    • 0
この回答へのお礼

ご解答を感謝致します。
1度ずつ、計算して算出するしかない値なのですね。
数学に本当に弱いので、イメージが難しいですが、
概念はなんとなくわかって来ました。
活用したいと思います。

お礼日時:2008/09/30 16:22

あなたの置かれてる環境がよくわからないので、アドバイスを



もう
x=r*cos(θ)
y=r*sin(θ)
とすればいいことは書かれているので、
厳密ではないですが、sin,cosの近似をしましょうか。
あとθはラジアン単位としましょう。
また、近似の範囲を 0≦θ≦π/4 としましょう。

それ以外の範囲はsin,cosの対象性で求めてみてください。
高校の数学の教科書でも持ち出してみてください。書いてあります。

sin(t)=t-(1/(3*2*1))t^3+(1/(5*4*3*2*1))t^5 - …
≒t-(1/(3*2*1))t^3+(1/(5*4*3*2*1))t^5
cos(t)=1-(1/(2*1))t^2+(1/(4*3*2*1))t^4-(1/(6*5*4*3*2*1))t^6 + …
   ≒1-(1/(2*1))t^2+(1/(4*3*2*1))t^4-(1/(6*5*4*3*2*1))t^6
このくらいに近似すれば十分じゃないかな?

プログラムでのソースがほしいなら、また書いてください。
    • good
    • 0
この回答へのお礼

ご解答ありがとうございます!
これは難解ですね…!
高校生の参考書を何冊か読んだのですが、イマイチ意味がつかめずここに来ております(涙)。
ラジアンの意味もどうもつかめていないので、もういちど参考書と照らし合わせて、今回の回答の意味を調べたいと思います。

お礼日時:2008/09/26 10:29

関数電卓かウヰンドウズの電卓を使います。


そのとき角度を「deg(度)」のモードに指定します。後はθ=0、1、2、3、‥とひたすら入力していき、
x=r*cos(θ)、y=r*sin(θ) を求めます。
    • good
    • 0
この回答へのお礼

ご解答ありがとうございます!
確かに、これで座標は出ますね。
何度のときにsinとcosがどの値か…を
電卓に頼らずに出せる方法があればいいのですが…
研究してみます。

お礼日時:2008/09/26 10:26

180度のときは、(300,0)じゃなくて(-150,0)ですよ。



半径1の円(単位円)で、角度がθのときの、x成分がcosθで、y成分がsinθになります。
半径が150の円だと、角度がθのときの座標は(150cosθ,150sinθ)になります。

絵を使っての説明じゃないと、難しいですねぇ。
    • good
    • 0
この回答へのお礼

ご解答ありがとうございます!
指摘の点、確かにその通りですね。
助かりました。

cosθ、sinθそのものは、数値では出せないのでしょうか?
この値を数値化して、計算式として作る必要があるのです…。
何かヒントがありましたらお教えいただけると幸いです。

お礼日時:2008/09/25 17:08

こんにちは、


円の座標の公式は X^2+Y^2=半径^2です
この公式を使えばXの位置がわかればYの位置がでますが
参考に
    • good
    • 0
この回答へのお礼

ご解答感謝致します!
この手順で確かに算出できますね。
しかし残念ながら、平方根を使えない特殊な環境なのです…
(とあるプログラムで算出しなければなりません)
平方根を通常の演算で出せる方法を探してみたいと思います

お礼日時:2008/09/25 17:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!