Цветной куб
Работа представляет собой трёхмерный куб в центральной проекции, вращающийся вокруг произвольно заданной оси. Видимые грани куба определяются по алгоритму Робертса. Освещение реализовано по модели Ламберта (источник света находится далеко, лучи считаются параллельными). Вращение реализовано при помощи кватернионов.
Поворот точки $p_0 = (x_0, y_0, z_0)$ вокруг вектора $\mathbf{v} = [v_x, v_y, v_z], (||\mathbf{v}||=1)$ на угол $\theta$ вычисляется по формуле:
$$
\begin{cases}
p' = qpq^{-1} \\
q = \cos(\frac{\theta}{2}) + \sin(\frac{\theta}{2})(v_xi + v_yj + v_zk) \\
q^{-1} = \cos(\frac{\theta}{2}) - \sin(\frac{\theta}{2})(v_xi + v_yj + v_zk) \\
p = x_0i + y_0j + z_0k
\end{cases}
$$
где $i, j, k$ - мнимые единицы.
