ページ 11

地球を2秒で1回転(正確に)させたいのですが・・・

Posted: 2011年2月23日(水) 16:36
by gaia
初めての投稿です。
よろしくおねがいします。

メタセコで作った地球を回転させようと思うのですが、何秒間に回転させるやりかたがわからなくて・・・
今できてるものは回転はしますが、速度を変えれるだけです。
どうすれば、時間どうり回転するのでしょうか・・・

//------------------
//基本プログラム
//------------------
#include "DxLib.h"

int Screen=0;
bool changeScreen = true;
const int MAIN_SCREEN = 0;
const bool FULL_SCREEN = false ;
int hModel; //地球モデル

void Initialize();
void MainScreen();
bool IsScreenChanged();

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow )
{
Initialize();

while (SUCCEEDED( mL.MessageProcess()))
{
switch(Screen){
case MAIN_SCREEN:
MainScreen();
break;
}
}
return(0);
}

//----------------
//3Dの初期化およびデータの読み込み
//----------------
void Initialize()
{
mL.SetFullScreenEnable( FULL_SCREEN);
if( !FULL_SCREEN )
{
mL.SetWindowSize(800,600);
mL.SetWindowTitle( _T("テストプログラム"));
}

if( FAILED( mL.Init() )) //ライブラリの初期化処理
mL.Exit();

//---------------
mL.SetCamera(VECTOR3(0,5,-15),VECTOR3(0,0,0));  //回転
hModel = mL.LoadModel(_T("data/x/"),_T("tikyu.x"));

//---------------

}

//----------------------
//プログラムのメイン処理
//----------------------
void MainScreen()
{
if( IsScreenChanged() )
{
}

mL.AdjustFPS( 60 ); //FPSの調節
mL.CLS(); //グラフィック画面の消去
mL.DrawFPS(); //FPSの表示
mL.DrawCameraPoint(10,10); //カメラの位置表示
mL.SetDebugMouseEnable( true ); //テスト用のマウス操作を有効化

//---------------------
{
static float DomeDeg = 0 ; DomeDeg += 1;
if(DomeDeg > 360)DomeDeg=0;
mL.DrawModel(hModel, VECTOR3(0,0,0),VECTOR3(0 ,DomeDeg,0) , 4);
}

//---------------------

mL.ScreenFlip(); //裏画面を表画面に描画
}

//-------------------------
//画面切り替え直後か判定
//-------------------------
bool IsScreenChanged()
{
bool change = changeScreen;
changeScreen = false;
return(change);
}

Re: 地球を2秒で1回転(正確に)させたいのですが・・・

Posted: 2011年2月23日(水) 17:51
by softya(ソフト屋)
実際に一回のループにかかった時間から、2秒で360度回転する角速度を求めれば良いです。
式で書くと、
360.0 * 一回のループにかかった時間(ms単位) / 2000.0
が回転角となります。これをDomeDegに足してください。

あと360度をオーバー時の処理は、
if(DomeDeg > 360)DomeDeg-=360;
としてください。

Re: 地球を2秒で1回転(正確に)させたいのですが・・・

Posted: 2011年2月23日(水) 17:58
by h2so5
質問内容とは直接関係ないですが、もう配布が終了している古いライブラリを使うより、
本家のDXライブラリを使ったほうがサポートも受けやすいと思います。

Re: 地球を2秒で1回転(正確に)させたいのですが・・・

Posted: 2011年2月24日(木) 11:23
by gaia
ありがとうございました
なんとかできました。