0001:
0002:
0003:
0004:
0005:
0006:
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:
0028: D3DXVECTOR4 v;
0029: D3DXMATRIX Iinv;
0030: D3DXVECTOR4 omega;
0031:
0032: D3DXVECTOR4 force;
0033: D3DXVECTOR4 torque;
0034:
0035: void Calc2ndValues();
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
0076: