Я думаю, что ключом к этой проблеме является переписать исходное уравнение эллипса в матричной форме : x T Ax , где x = {x, y, z} и A положительно определены. Принимая
мы можем обновить A через преобразование подобия . Таким образом, обновленная матрица будет тогда A ' = U T AU , где U является ортогональной матрицей и U T - его транспонирование. Затем A ' используется для обновления других представлений.
Начиная с матриц вращения вокруг трех осей
мы можем ясно видеть, что вращение вокруг осей будет влиять на 8 членов в A . Поскольку A является симметричным, это сводится только к изменению 5 из 6 членов. Масштабирование / растяжение также очень легко сделать.
Мы начнем с предположения, что растяжение происходит вдоль оси x (или любой подходящей оси), так что S является диагональной матрицей с диагональю {sqrt (s), 1, 1}, где s - количество примененного растяжения. Затем масштабирующая матрица поворачивается в правильном направлении приложения, то есть R Theta SR Theta T , где Theta - угол между положительная ось х и направление растяжения по часовой стрелке. Обратите внимание на обратный порядок поворотов здесь: R Theta T можно рассматривать как вращение координат так, что S растягивает Ось X и R Тета поворачивает их назад. Например, если плоскость x-y масштабируется вдоль x = y с коэффициентом s, то
S применяется к A таким же образом, как и вращения, и, опять же, легко видеть, что операция масштабирования напрямую влияет на все члены, кроме zz ,