# Quaternion

[Quaternions][Quaternion] are cool! They find uses in both theoretical and
applied mathematics, in particular for calculations involving three-dimensional
rotations such as in three-dimensional computer graphics and computer vision.

Choose an OOP language of your liking and design a [Quaternion] class
implementing all of the properties by its [definition].

_Hint: you can name the component 1 as `e`._

The interface is up to you. How should you create a Quaternion? Should you
override operators for [Quaternion] operations, if your language if choice
supports it? Should you have any static properties? Why?

Please, answer all those question in a comment above the class definition.

[Quaternion]: http://en.wikipedia.org/wiki/Quaternion
[definition]: http://en.wikipedia.org/wiki/Quaternion#Definition

Add a vague description for the second problem, quaternions
Add a vague description for the second problem, quaternions
