00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
#ifndef OPENCAL_PHYSICALOBJECT_H
00012
#define OPENCAL_PHYSICALOBJECT_H
00013
00014
00015
#include <OpenCAL/global.h>
00016
#include <OpenCAL/Object.h>
00017
#include <OpenCAL/Physical.h>
00018
00019
namespace OpenCAL
00020 {
00021
00022
class PhaseSpace;
00023
00028 class OPENCAL_API PhysicalObject:
public Object,
public Physical
00029 {
00030
protected:
00031
00032
00033
public:
00034
00035
virtual ~PhysicalObject();
00036
00037
00038
00039
00040
00041
00042
virtual void disable() { m_velocity = m_force = Vector3::zero; m_enabled =
false; }
00043
void fix() { disable(); }
00044
void unfix() { m_enabled =
true; }
00045
bool isFixed()
const {
return !m_enabled; }
00046
00047
00048
virtual void addToState(
PhaseSpace *state) = 0;
00049
virtual void addToDerivative(
PhaseSpace *deriv) = 0;
00050
virtual void fromState(
PhaseSpace *state) = 0;
00051
00052
protected:
00053
00054
00055 PhysicalObject(
System *parent,
float mass = 1.0);
00056 };
00057 }
00058
00059
#endif // OPENCAL_PHYSICALOBJECT_H