Задача вращения относительно произвольной оси
Вращение относительно произвольной оси также можно реализовать посредством умножения матрицы на вектор, но предварительно эту матрицу надо построить. Предположим, что прямая проходит через начало координат и задана единичным вектором , и требуется выполнить поворот точки на угол относительно нее. Для этого воспользуемся следующим алгоритмом: 1. Совместим прямую с осью посредством поворота системы координат относительно оси на угол , а затем поворота относительно оси на угол . 2. Выполним поворот относительно оси на угол . 3. Выполним повороты системы сначала относительно оси на угол , а затем относительно оси на угол (в обратном порядке по отношению к первым поворотам), тем самым возвращая ее в исходное положение. Итоговая матрица преобразования, таким образом, является произведением нескольких матриц, а именно Матрицы являются матрицами преобразования координат при поворотах системы координат, как было показано в предыдущем разделе. Определим сначала угол , который является углом между осью и его проекцией вектора на плоскость . Пусть - длина этой проекции. Тогда , (синус отрицателен, поскольку поворот идет от оси к оси , т.е. в отрицательном направлении). После поворота системы координат новыми координатами вектора будут . Угол - это угол между векторами и , поэтому . Теперь мы можем выписать вид матриц преобразования координат для каждого шага алгоритма, учитывая то, что матрицы преобразования координат при повороте системы координат обратны по отношению к соответствующим матрицам вращения: Нетрудно убедиться, что последовательное умножение матриц и на вектор дадут в результате вектор , т.е. этот вектор действительно станет осью аппликат. Остается только выписать окончательный вид матрицы (для сокращения записи введем следующие обозначения: ):
Напомним, что являются направляющими косинусами прямой, относительно которой выполняется поворот. Нетрудно убедиться, что если в качестве осей вращения взять оси координат, то мы в точности получим формулы (3.10). Вопросы и упражнения
|