• Main Page
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members

src/physic/header/IBody.h

Go to the documentation of this file.
00001 #pragma once
00002 #include <util.h>
00003 
00006 class IBody
00007 {
00008 public:
00011         IBody(const float3& position, const float3& rotation)
00012         {
00013                 transformation.identity();
00014                 setRotation(rotation);
00015                 setPosition(position);
00016                 radius = 0.f;
00017         }
00018 
00020         virtual ~IBody(void) {}
00021 
00024         virtual void applyForce(float3 vec) = 0;
00025 
00027         inline void setPosition(const float3& position)
00028         {
00029                 transformation(0,3) = position[0];
00030                 transformation(1,3) = position[1];
00031                 transformation(2,3) = position[2];
00032         }
00033 
00035         inline void setRotation(const float3& rotation)
00036         {
00037                 //float3x3 R;
00038                 //R.asRotation(rotation[0], rotation[1], rotation[2]);
00039                 float4x4 R = RotationY(rotation[1]) * RotationX(rotation[0]) * RotationZ(rotation[2]);
00040                 transformation(0,0) = R(0,0);
00041                 transformation(0,1) = R(0,1);
00042                 transformation(0,2) = R(0,2);
00043                 transformation(1,0) = R(1,0);
00044                 transformation(1,1) = R(1,1);
00045                 transformation(1,2) = R(1,2);
00046                 transformation(2,0) = R(2,0);
00047                 transformation(2,1) = R(2,1);
00048                 transformation(2,2) = R(2,2);
00049         }
00050 
00052         virtual float3 getPosition() = 0;
00053         
00055         virtual void setGlobalPosition(float3 position) = 0;
00056         
00058         virtual void stopMotion() = 0;
00059         
00061         virtual void setMass(int mass) = 0;
00062         
00064         virtual bool isMoving() = 0;
00065 
00067         virtual void slowDown() = 0;
00068 
00070         void setRadius(float r) { radius = r; }
00071 
00073         float getRadius() { return radius; }
00074 
00076         inline void setIdentity()
00077         {
00078                 transformation.identity();
00079         }
00080 
00082         inline float4x4& getTransformation(void)
00083         {
00084                 return transformation;
00085         }
00086 
00087 protected:
00088         float4x4 transformation;
00089         float radius;
00090 };
00091 
00092 typedef IBody* pIBody;

Generated on Fri Jun 18 2010 17:48:39 for Cannonball by  doxygen 1.7.0