新・C言語 ~ゲームプログラミングの館 第3.5章

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
junjunjun

新・C言語 ~ゲームプログラミングの館 第3.5章

#1

投稿記事 by junjunjun » 10年前

新・C言語 ~ゲームプログラミングの館~ [DXライブラリ]をしている者です。
第3.5章でつまづいてしまいました。
「円周率をPIとし、1秒間に60カウントアップするカウンタ(Count)を使えば、

sin( PI*2 / 60 * Count )

で1周期分の値が取得出来ます。」
がよくわかりません。
サンプルとして、

コード:

#include <math.h>
#include "DxLib.h"

#define PI 3.141592654f

int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
        ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen( DX_SCREEN_BACK ); //ウィンドウモード変更と初期化と裏画面設定

        int Handle;     // 画像格納用ハンドル
        int Count = 0;
        Handle = LoadGraph( "画像/キャラクタ01.png" ); // 画像のロード

        // while(裏画面を表画面に反映, メッセージ処理, 画面クリア)
        while( ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0 ){

                DrawRotaGraph( 100, 240+sin(PI*2/240*Count)*200, 1.0, 0.0, Handle, TRUE ); //画像の描画
                DrawRotaGraph( 500, 240, 1.0+sin(PI*2/120*Count)*0.5, 0.0, Handle, TRUE ); //画像の描画
                                Count++;

        }
        
        DxLib_End(); // DXライブラリ終了処理
        return 0;
}
とあります。
「1周期分の値が取得出来ます。」というのがよくわかりません。どなたかわかりやすく教えて頂けないでしょうか?
(sinって何だっけ?は見ました。)

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

Re: 新・C言語 ~ゲームプログラミングの館 第3.5章

#2

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

何処で分からなくなっているか疑問なので、countの変化の意味はわかりますか?
あとsin( PI*2 / 60 * Count )のCountが0から120までをprintfするコンソールアプリを作ってみてもらえますか。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

non
記事: 1097
登録日時: 13年前

Re: 新・C言語 ~ゲームプログラミングの館 第3.5章

#3

投稿記事 by non » 10年前

数学はどこまで習ってますか?
ラジアンを習っていないという前提で、説明します。
私たちが 直角は90°と言っている値は 度数(ディグリー)って言います。
1周は360°です。それに対し、360°=2π(πは円周率3.1415・・・・のことです)とし、
1周を2πとした数値で表すのをラジアンといいます。
C言語で使うsin関数は、このラジアンでないと計算できません。
1周が2πですから、それを60で割れば、1/60秒で回転する角度になります。
度数で言えば、360/60=6 なので、1/60秒で6°進むということになります。
これにcountを掛けた PI*2 / 60 * Count は、 count/60 秒で進む角度になります。
絵を書かないと、説明が難しいですね。
non

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

Re: 新・C言語 ~ゲームプログラミングの館 第3.5章

#4

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

nonさんが最後に書いた絵を描くというのは、よい理解の方法なのでご自分で描いてみてください。
プログラミングの学習でアナログな絵を描くという行為は頭にイメージを形作るために非常に助けになります。
後々でも、絵を書くことは設計段階でかなり役立つ行為です。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

junjunjun

Re: 新・C言語 ~ゲームプログラミングの館 第3.5章

#5

投稿記事 by junjunjun » 10年前

ご回答ありがとうございました。
これからも頑張ります。

閉鎖

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