Можно сначала записать преобразование в векторной форме. Допустим, точка

с радиус-вектором

— та, которую надо повернуть, а точка

с радиус-вектором

находится на оси вращения. Единичный вектор

параллелен оси вращения. Представим

в виде суммы:

,
где

— вектор из

в

. При вращении

не изменится, а

повернётся на некоторый угол

вокруг оси (один и тот же для всех точек). Вектор

можно разложить на составляющую, параллельную оси, и перпендикулярную ей:

, где

При вращении

опять-таки не меняется, а

преобразуется некоторым простым образом.