Довольно часто мультипликатор знает, откуда объект начинает движение (скажем, с поверхности Земли) и куда он должен переместиться (скажем, вдоль линии, ведущей к далекой Луне). Принципиально важно и точное положение двумерного экрана, потому что именно его видит зритель. Он должен выглядеть достаточно художественно или увлекательно, в зависимости от ситуации. Поэтому обе локации, начальная и конечная, тоже представлены тщательно рассчитанными списками чисел. Если характер движения в промежутке между ними не так важен, компьютер может получить задание интерполировать объект между начальной и конечной точками. Тогда два списка объединяются согласно определенному математическому правилу, которое представляет характер перехода от одного к другому. Усреднение каждой пары соответствующих координат, например, дает нам объект посередине между стартом и финишем. Однако такое слишком сильное упрощение неприемлемо, поскольку оно обычно искажает форму звездолета.
Фокус в том, чтобы воспользоваться для интерполяции жестким движением в пространстве. Можно, например, начать с переноса звездолета в центральную точку и поворота его на 45°. Если проделать это еще раз, звездолет окажется в конечной точке с разворотом на 90° относительно начальной ориентации. Для получения иллюзии непрерывного движения можно раз за разом переносить звездолет на 1/90 дистанции и поворачивать при этом на 1°. На практике, конечно, используются намного более мелкие шаги.
Более отвлеченно мы можем рассматривать эту процедуру с точки зрения «пространства конфигураций» всех движений. Каждая точка в этом пространстве соответствует конкретному движению, причем близкие точки дают близкие движения. Так что последовательность движений, каждое из которых близко к предыдущему, соответствует последовательности точек, каждая из которых близка к предыдущей. Связывая эти точки в упорядоченную цепочку, мы получаем ломаную траекторию в пространстве жестких движений, а очень маленький шаг делает траекторию непрерывной. Так что теперь задача заполнения промежутков от начального изображения до конечного превращается в задачу нахождения маршрута через пространство конфигураций. Если мы хотим, чтобы переход получился гладким, траектория тоже должна быть гладкой, без резких поворотов. Существуют хорошие способы сглаживания ломаной линии.
«Размерность» пространства конфигураций, то есть число координат, необходимых для определения точки в нем, равна шести. В это число входят три измерения для параллельного переноса: по одной координате для каждого направления север-юг, восток-запад, верх-низ. Еще два измерения нужны, чтобы обозначить положение оси вращения, а последнее – для угла вращения. Итак, то, что начиналось как задача о плавном движении объекта в трех измерениях, превращается в задачу о движении точки вдоль гладкой траектории в шести измерениях. Таким образом, преобразованная задача анимации может быть решена при помощи методов из многомерной геометрии, которые помогают строить подходящие траектории.
В прикладной математике традиционный подход к описанию вращения цельного объекта восходит к Эйлеру. В 1752 году он доказал, что любое движение, в котором не присутствует зеркальное отражение, представляет собой либо параллельный перенос, либо вращение вокруг оси{54}
. Однако для расчетов он комбинировал три вращения вокруг трех осей в обычном координатном представлении пространства, сегодня этот метод называют• рысканье относительно вертикальной оси дает направление движения самолета в горизонтальной плоскости;
• тангаж – вращение вокруг горизонтальной оси, проходящей через крылья;
• крен – вращение вокруг оси, проходящей из носа в хвост.
Первая проблема такого представления состоит в том, что принципиально важен порядок, в котором применяются компоненты. Вращения не коммутативны, их нельзя переставлять местами. Вторая проблема в том, что выбор осей не является единственно возможным, и в разных сферах используются разные варианты. Третья – в том, что формулы для объединения двух последовательных вращений, выраженных через эйлеровы углы, чрезвычайно сложны. Эти особенности не вызывают чересчур больших проблем в аэродинамике, где речь идет в основном о силах, действующих на самолет, когда он находится в заданной ориентации, но для компьютерной анимации, где объекты претерпевают последовательности движений, они весьма неудобны.