57 lines
1.1 KiB
C++
57 lines
1.1 KiB
C++
// -*- C++ -*-
|
|
|
|
#ifndef MBOSTOCK_ROTATING_H
|
|
#define MBOSTOCK_ROTATING_H
|
|
|
|
#include "model.h"
|
|
#include "physics/rotation.h"
|
|
#include "physics/vector.h"
|
|
#include "room_force.h"
|
|
#include "room_object.h"
|
|
#include "transforming.h"
|
|
|
|
namespace mbostock {
|
|
|
|
class RotatingModel : public Model {
|
|
public:
|
|
RotatingModel(Model& m, const Rotation& r);
|
|
|
|
virtual void initialize();
|
|
virtual void display();
|
|
|
|
private:
|
|
Model& model_;
|
|
const Rotation& rotation_;
|
|
};
|
|
|
|
class RotatingRoomObject : public TransformingRoomObject {
|
|
public:
|
|
RotatingRoomObject(RoomObject* o, const Rotation& r);
|
|
|
|
virtual Model& model();
|
|
virtual const Shape& shape() const;
|
|
virtual Vector velocity(const Vector& x) const;
|
|
|
|
private:
|
|
const Rotation& rotation_;
|
|
RotatingShape shape_;
|
|
RotatingModel model_;
|
|
};
|
|
|
|
class RotatingRoomForce : public RoomForce {
|
|
public:
|
|
RotatingRoomForce(RoomForce* f, const Rotation& r);
|
|
virtual ~RotatingRoomForce();
|
|
|
|
virtual const Shape& shape() const;
|
|
virtual Vector force(const Particle& p);
|
|
|
|
private:
|
|
RoomForce* force_;
|
|
const Rotation& rotation_;
|
|
RotatingShape shape_;
|
|
};
|
|
|
|
}
|
|
|
|
#endif
|