投稿
あのな、俺はな、三角関数がな、わかんねーんだな。それでな、んーとな、説明をな、教えてくれだっぺ!!!
5そうだね
プレイ済み
返信[1]
親投稿
STiNGER STiNGER8901
三角関数で何をしたいか、教えてください。作例をお見せしましょう。
0そうだね
プレイ済み
返信[2]
親投稿
たもつ tamo2xvi
三角関数以外にサイン・コサイン・タンジェントなども この質問に便乗したいです。 その昔シューティングで敵の軌道や弾の軌道によく使うと 言われたんですが、利用方法が良く分からなくて・・・
0そうだね
プレイ済み
返信[3]
親投稿
おかっぺ Japanese_WASABI
半径1の円を書きます。 右側(座標 1,0)から、反時計回りで考えると、角度が90度なら真上(座標 0,-1)に、180度なら左(座標 -1,0)に、270度なら真下(座標 0,1)になりますね。
0そうだね
プレイ済み
返信[4]
親投稿
おかっぺ Japanese_WASABI
角度がRの時のx軸をcosと言う関数で表現し、y軸をsinと言う関数で表現します。 ただし、数学で円周を計算したときに、3.14(π)を使った様に、三角関数の角度は普段使う角度の単位(deree)ではなく、別の角度の単位(radian)を使います。
0そうだね
プレイ済み
返信[5]
親投稿
A47 A47A47
高校の数学IIの授業で習うはずです。
0そうだね
プレイ済み
返信[6]
親投稿
おかっぺ Japanese_WASABI
単位の変換には、DEG/RADと言う関数を使います。 COS(RAD(45))で、角度が45度のx軸、 SIN(RAD(45))で、角度が45度のy軸が取得出来ます。(半径1の円) ※数値以外が命令の部分 PRINT COS(RAD(90)),SIN(RAD(90)) を数値を変えながら、ダイレクトモードで実行してみてね。
0そうだね
プレイ済み
返信[7]
親投稿
おかっぺ Japanese_WASABI
注意点として、 PRINT SIN(RAD(180)) では、0と表示されますが、実はとてつもなく小さい数値なので、表示上は0となりますが、実は0よりも大きい値になります。 (πが無限に続く数値で、コンピュータは厳密に計算出来ないから)
1そうだね
プレイ済み
返信[8]
親投稿
STiNGER STiNGER8901
へいお待ち! 戦闘機が的を狙って飛んでいくプログラムです。
1そうだね
プレイ済み
返信[9]
親投稿
おかっぺ Japanese_WASABI
ゲームでは、目的座標へ等速で向かう時(STGで、自機を狙う弾など)に使ったりするけど、とても難しいので、あまりおすすめしません。
0そうだね
プレイ済み
返信[10]
親投稿
おかっぺ Japanese_WASABI
誰かが作った便利な関数を利用するのがおすすめです。 例えば、僕の過去の投稿とか。 (あまり性能良くないかもなので、遅い様なら、誰かに頼んで見てください。) ※いくつか前のコメントのdereeは、degreeのうち間違いです。
0そうだね
プレイ済み
返信[11]
親投稿
STiNGER STiNGER8901
要は、二つのxy座標間の角度(ラジアン)をアークタンジェントで求めて、そこからコサイン・サインでxy移動量を出すというものです。 まぁこういうのは公式を丸暗記で覚えちゃえば大丈夫。 BASICは盗んでおぼえましょう。
0そうだね
プレイ済み
返信[12]
親投稿
おかっぺ Japanese_WASABI
と、ここまで書いたところで、折角、STiNGERさんが説明しようとしてたのを奪ってしまった事に気づきました。 @STiNGERさん 大変、失礼しました。ごめんなさい
0そうだね
プレイ済み
返信[13]
親投稿
おかっぺ Japanese_WASABI
スゴい。こ、こんなに簡単に出来るのか! 恥ずかしくなってきた(笑)
0そうだね
プレイ済み
返信[14]
親投稿
沢山コメントを教えてくださってありがとうございます。長々とプチコンで遊んでいますが、いまいち三角関数がわからないんですよね。この意見をこれからのプログラムに役立とうと思います。
0そうだね
プレイ済み
返信[15]
親投稿
STiNGER STiNGER8901
私もATANを使うやり方を教わるまでは分からずじまいでした。分かるともう世界が広がりますね。スト2で昇龍拳が打てるようになった時みたいな。 >おかっぺ様 いえいえ、こちらこそ・・・。
0そうだね
プレイ済み
返信[16]
親投稿
今はなATAN( Y, X )(ATAN2相当)という超絶便利関数があってだな、とてもお手軽に角度を算出できるんじゃ。昔はのう、ATAN( Y/X )しかなくての、それはそれは苦労したもんじゃて。 三角関数を覚える手始めとして、COS/SINとGLINEで円を描いてみる練習をするといいと思います。 円を書いたら、つぎは縦長楕円、そして渦巻き、最終的には・・・そうですね、歯車を描くことができたらもう十分な域に達していると思います。 単位はラジアンなので、ラジアンに慣れていない場合はおかっぺさんのいうとおりRAD()関数を使うのが良いでしょう。
1そうだね
プレイ済み
返信[17]
親投稿
おかっぺ Japanese_WASABI
三角関数をゲームで使う例としては、STiNGERさんが書いて下さった方法で、目的地に向かう以外に、ラジコン操作をするときにも使えます。 スプライトを敵の方向に回転させるのにも使えるかな。
0そうだね
プレイ済み
返信[18]
親投稿
おかっぺ Japanese_WASABI
×敵の方向に回転させる ○敵の方向を向いてる様に回転させてみせる ※厳密には、RADは三角関数ではないと言う突っ込みは無しでお願いします(恥)
0そうだね
プレイ済み
返信[19]
親投稿
2そうだね
プレイ済み
返信[20]
親投稿
ASA fusuian
sinとcosにrad(1)~rad(360)を順にやると、円が描けます。ただ、そのままだと半径1の円を(0,0)に書くのでよくわかりません。GCIRCLEの真似をしてもつまらないので…
0そうだね
プレイ済み
返信[21]
親投稿
ASA fusuian
↑のプログラムリストです。 中心OX,OYや、半径Lの値を変えてみましょう。
0そうだね
プレイ済み