3-9 ПОВОРОТ ВОКРУГ ПРОИЗВОЛЬНОЙ ОСИ В ПРОСТРАНСТВЕОбобщенный случай поворота вокруг произвольной оси в пространстве встречается часто, например в робототехнике, мультипликации, моделировании. Следуя логике предыдущего обсуждения, поворот вокруг произвольной оси в пространстве выполняется с помощью переноса и простых поворотов вокруг координатных осей. Так как метод поворота вокруг координатной оси известен, то основная идея заключается в том, чтобы совместить произвольную ось вращения с одной из координатных осей. Рис. 3-6 Несколько поворотов относительно локальной системы координат. Предположим, что произвольная ось в пространстве проходит через точку с направляющим вектором . Поворот вокруг этой оси на некоторый угол выполняется по следующему правилу: - выполнить перенос так, чтобы точка находилась в начале системы координат; - выполнить соответствующие повороты так, чтобы ось вращения совпала с осью ; - выполнить поворот на угол вокруг оси ; - выполнить преобразование, обратное тому, что позволило совместить ось вращения с осью ; - выполнить обратный перенос. В общем случае для того, чтобы произвольная ось, проходящая через начало координат, совпала с одной из координатных осей, необходимо сделать два последовательных поворота вокруг двух других координатных осей. Для совмещения произвольной оси вращения с осью сначала выполним поворот вокруг оси , а затем вокруг оси . Чтобы определить угол поворота вокруг оси , используемый для перевода произвольной оси в плоскость , спроецируем сначала на плоскость направляющий единичный вектор этой оси (рис. 3-7а). Компоненты и спроецированного вектора равны - и -компонентам единичного направляющего вектора оси вращения. Из рис. 3-7а следует, что (3-18) и , . (3-19) Рис. 3-7 Повороты, необходимые для совмещения с осью единичного вектора . (а) Поворот вокруг ; (b) поворот вокруг . После перевода в плоскость с помощью поворота вокруг оси , -компонента единичного вектора равна , а -компонента равна , т.е. -компоненте направляющего вектора, как это показано на рис. 3-7b. Длина единичного вектора равна, конечно, 1. Таким образом, угол поворота вокруг оси , необходимый для совмещения произвольной оси с осью , равен , . (3-20) Тогда полное преобразование можно представить в виде , (3-21) где матрица переноса равна . (3-22) Матрица преобразования поворота вокруг оси (3-23) и вокруг оси . (3-24) И, наконец, вращение вокруг произвольной оси задается матрицей поворота вокруг оси . (3-25) На практике углы и не вычисляются явным образом. Элементы матриц поворотов и в (3-21) получаются из уравнений (3-18)-(3-20) за счет выполнения двух операций делениия и извлечения квадратного корня. Хотя данные результаты были разработаны для произвольной оси в первом квадранте, они применимы во всех квадрантах. Если компоненты направляющего вектора произвольной оси неизвестны, то, зная вторую точку на оси, их можно определить, нормализовав вектор, соединяющий первую и вторую точки. Более точно вектор оси из в равен . Нормализация дает компоненты направляющего вектора: . (3-26) Более полно этот метод иллюстрируется в следующем примере.
|