- Point(): x(0), y(0), z(0) { }
- Point(float x_, float y_): x(x_), y(y_), z(0) { }
- Point(float x_, float y_, float z_): x(x_), y(y_), z(z_) { }
-};
+inline float distance(const Vector &p, const Vector &q)
+{ return (p-q).norm(); }
+
+typedef Msp::Geometry::Angle<float> Angle;
+
+typedef Msp::Geometry::AffineTransformation<float, 3> Transform;
+
+inline Vector rotated_vector(const Vector &v, const Angle &a)
+{ return Transform::rotation(a, Vector(0, 0, 1)).transform(v); }
+
+inline Vector vector_at_angle(const Angle &a)
+{ return rotated_vector(Vector(1, 0, 0), a); }