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: D3DXQUATERNION q;
0025: D3DXVECTOR4 p;
0026: D3DXVECTOR3 L;
0027:
0028: D3DXVECTOR4 v;
0029: D3DXMATRIX Iinv;
0030: D3DXMATRIX R;
0031: D3DXVECTOR3 omega;
0032:
0033: D3DXVECTOR4 force;
0034: D3DXVECTOR3 torque;
0035:
0036: void Calc2ndValues();
0037: virtual void ComputeForceAndTorque(float dt){};
0038: public:
0039: CRigidBody(){Init();};
0040: virtual ~CRigidBody(){};
0041: virtual void Init();
0042: void Update(float dt);
0043:
0044: D3DXMATRIX GetRotation() const;
0045: D3DXVECTOR4 GetTranslate() const;
0046: void SetTranslate(const D3DXVECTOR4 tr);
0047: };
0048:
0049:
0050:
0051:
0052: class CCar : public CRigidBody {
0053: private:
0054: int time;
0055: int dt;
0056: float speed;
0057: float handle;
0058: protected:
0059: virtual void ComputeForceAndTorque(float dt);
0060: public:
0061: CCar();
0062: virtual ~CCar(){};
0063: virtual void Init();
0064: virtual void Control();
0065: virtual void AddSpeed(float acc);
0066: virtual void AddHandle(float dh);
0067: };
0068:
0069:
0070:
0071:
0072: void MyMsgProc(UINT wParam);
0073:
0074: extern CCar car;
0075:
0076: #endif
0077: