0001: // ----------------------------------------------------------------------------
0002: //
0003: // rigidbody.h - 全体的な定義
0004: // 
0005: // Copyright (c) 2002 IF (imagire@gmail.com)
0006: // All Rights Reserved.
0007: //
0008: // ----------------------------------------------------------------------------
0009: #ifndef _RIGIDBODY_H
0010: #define _RIGIDBODY_H
0011: 
0012: #include <d3d8.h>
0013: #include <d3dx8.h>
0014: 
0015: class CRigidBody {
0016: private:
0017: protected:
0018:     // 定数
0019:     float           mass;
0020:     D3DXMATRIX      IBody;
0021:     D3DXMATRIX      IBodyinv;
0022:     // 状態ベクトル
0023:     D3DXVECTOR4     x;                      // 重心座標
0024:     D3DXMATRIX      R;                      // 回転座標
0025:     D3DXVECTOR4     p;                      // 運動量
0026:     D3DXVECTOR4     L;                      // 回転モーメント
0027:     // 2次的変数
0028:     D3DXVECTOR4     v;
0029:     D3DXMATRIX      Iinv;
0030:     D3DXVECTOR4     omega;
0031:     // 外力
0032:     D3DXVECTOR4     force;
0033:     D3DXVECTOR4     torque;
0034: 
0035:     void            Calc2ndValues();        // v や ω を計算
0036:     virtual void    ComputeForceAndTorque(float dt){};
0037: public:
0038:                     CRigidBody(){Init();};
0039:     virtual         ~CRigidBody(){};
0040:     virtual void    Init();
0041:     void            Update(float dt);       // 座標に時間変化を足しこむ
0042: 
0043:     D3DXMATRIX      GetRotation() const;
0044:     D3DXVECTOR4     GetTranslate() const;
0045:     void            SetTranslate(const D3DXVECTOR4 tr);
0046: };
0047: 
0048: // ----------------------------------------------------------------------------
0049: // 車へのカスタマイズ
0050: // ----------------------------------------------------------------------------
0051: class CCar : public CRigidBody {
0052: private:
0053:     int             time;
0054:     int             dt;
0055:     float           speed;
0056:     float           handle;
0057: protected:
0058:     virtual void    ComputeForceAndTorque(float dt);
0059: public:
0060:                     CCar();
0061:     virtual         ~CCar(){};
0062:     virtual void    Init();
0063:     virtual void    Control();
0064:     virtual void    AddSpeed(float acc);
0065:     virtual void    AddHandle(float dh);
0066: };
0067: 
0068: // ----------------------------------------------------------------------------
0069: // 宣言
0070: // ----------------------------------------------------------------------------
0071: void MyMsgProc(UINT wParam);
0072: 
0073: extern CCar car;
0074: 
0075: #endif /* !_RIGIDBODY_H */
0076: