三角関数について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
klm
記事: 11
登録日時: 12年前
住所: 大阪府 大阪市

三角関数について

#1

投稿記事 by klm » 12年前

円を描くように円を動かせたいのですが
下のコードをコンパイルしてもうまく動きません
いったいどこに問題があるんでしょうか
開発環境はVisual C++ 2008 です

コード:

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

int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
        ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen( DX_SCREEN_BACK ); //ウィンドウモード変更と初期化と裏画面設定
		
		double x,y,kakudo=0;
		int Red = GetColor( 255 , 0 , 0 );
		
        while( ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0 ){
			kakudo++,x=320,y=240;
			x=320+cos(kakudo)*100;
			y=240+sin(kakudo)*100;
			DrawCircle ( x , y , 10 ,Red, TRUE);
		}
        
        DxLib_End(); // DXライブラリ終了処理
        return 0;
}  


アバター
ぱにしん
記事: 58
登録日時: 12年前
住所: 滋賀

Re: 三角関数について

#2

投稿記事 by ぱにしん » 12年前

math.hのsin、cosの引数に取る角度はラジアン値を入れなければなりません。

http://www.c-tipsref.com/reference/math/sin.html

こちらのサンプルが参考になるかと思います。

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

Re: 三角関数について

#3

投稿記事 by non » 12年前

試に、
kakudo++;

kakudo+=0.1;
にしてみたらどうでしょう。
non

アバター
Dixq (管理人)
管理人
記事: 1661
登録日時: 13年前
住所: 北海道札幌市
連絡を取る:

Re: 三角関数について

#4

投稿記事 by Dixq (管理人) » 12年前

角度を表現する方法は「度数法」と「孤度法」があります。
最初は1周が360度である度数法で習うと思いますが、高校でラジアンを使う孤度法を習うと思います。
sin,cosに渡す角度は後者の孤度法です。
1周が2πになります。
2πは6.28位ですから、60FPSのモニタなら、
kakudo++;
だと1秒間に10周してしまうことになります。
60FPSで3秒は180フレームですから、例えば3秒で1周させたければ
kakudo += 2π / 180;
でよいです。

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: 三角関数について

#5

投稿記事 by みけCAT » 12年前

sin、cosで引数をラジアンに変換してもいいと思います。
cos(kakudo)→cos(kakudo*PHI/180.0)
sin(kakudo)→sin(kakudo*PHI/180.0)
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

box
記事: 2002
登録日時: 13年前

Re: 三角関数について

#6

投稿記事 by box » 12年前

そもそも、double型の変数にインクリメント演算子を適用することが本当に正しいのか?
というような話はあったりしますか?
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

閉鎖

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