#ifndef SPACE_SHIP_H_
#define SPACE_SHIP_H_
+#include "../graphics/Vector.h"
+
+#include <cmath>
+
namespace space {
class Ship {
-private:
+public:
+ constexpr Ship() { }
+
+public:
+ float mass = 1;
+ float linForce = 1;
+ float revForce = 1;
+ float rotForce = 1;
+
+ Vector<int> area;
+
+ Vector<float> pos;
+ Vector<float> vel;
+ Vector<float> Dir() const {
+ return Vector<float>::FromPolar(1, orient);
+ }
+ Vector<float> Acc() const {
+ float force = (linThrottle < 0 ? revForce : linForce);
+ return Dir() * force / mass * linThrottle;
+ }
+
+ float orient = 0;
+ float rotVel = 0;
+ float RotAcc() const {
+ return rotForce / mass * rotThrottle;
+ }
+
+ float linThrottle = 0;
+ float rotThrottle = 0;
+
+public:
+ void Update(float delta) {
+ rotVel += RotAcc() * delta;
+ orient += rotVel * delta;
+ vel += Acc() * delta;
+ pos += vel * delta;
+ }
};