Движение по спирали (+проект)

vortex

Внимание — много букв

На этот раз совместим несколько выражений, чтобы получить классный эффект стягиваемых к центру объектов.

Нам потребуется:

  • Понимание актангенса.
  • Примерное понимание полярных координат. Да, опять они. Но надеюсь вы внимательно читали код выражения про планеты, так что ничего сложного быть не должно.

Создадим два выражения: одно для работы с положением объекта, другое для его автоматической ориентации относительно центра.

Создадим Null-объект, назовем его center, будем использовать его координату как центр системы.

На него сразу же добавим слайдеры:

  • alpha — угол поворота
  • r — длина радиус-вектора
  • step — шаг сдвига объектов по углу
  • time_shift — сдвиг объектов по временной оси. Поставьте 1.

Будем вращать все объекты по одному правилу, но с временным сдвигом и сдвигом по углу, создавая интересные паттерны.

Начнем с автоматической ориентации объекта относительно центра.

Сперва пара слов об арктангенсе

13

Как известно, тангенс угла это отношение противолежащего катета к прилежащему. Арктангенс вычисляет сам угол. Так как все операции с углами АЕ ведет в радианах, нельзя забывать функции перевода.
Арктангенс определен на отрезке (-П/2,П/2), так что на второй части окружности поворот должен отличаться на 180 градусов (т.е. одно Пи)
Но нам надо также добавить к повороту объекта лишние 90 градусов, так как расчет мы ведем на тригонометрической окружности, в а АЕ она повернута на -90 градусов.
Понять в какой мы полуплоскости нам поможет длина отрезка b. Если она больше или равна нулю, то мы справа.
Можно было бы написать и компактнее, но этот код читается лучше.

Создадим шэйп и добавим это выражение в Rotation.

Теперь как бы вы ни перемещали его по композиции, шэйп всегда будет ориентирован относительно центра.
Переходим вращению по спирали.
Для начала анимируем r и alpha у центра. r — от какого-нибудь большого значения до 0, alpha — от 200 до, скажем , -20 градусов.

И добавим это выражение в Position шэйпа.

Теперь осталось лишь скопировать шэйп сколько нужно раз и поиграть с параметром step. Не стоит выбирать его кратным 15, тогда будет возникать паттерн — «правильная звездочка», лучше выбрать что-то типа 57 градусов или 43. Хотя опять же, все зависит от задач.

Так как тут и правда очень много букв, прилагаю проект для CS5.5

Вообще если разбить этот проект на части, то из него можно сделать как минимум 3 различных клевых эффекта, плюс, как можно заметить, он серьезно перекликается с выражением для вращения планет.
В следующих постах я отойду от полярных координат и познакомлю вас с чем-нибудь новым и и не менее интересным. Например, расскажу как я написал свое первое выражение и чем оно занималось.
А так как 40% опрошенных не знали про loop’ы, то я продолжу постить супер базовые выражения.

Ценный совет.

Так как АЕ реально ущербен в плане программирования: никакого дебаггинга и в помине нет например, на отладку кода может уйти очень много времени. Поэтому ваш лучший инструмент — бумажка и карандаш. Сперва рисуйте, думайте, считайте, затем уже пишите.

Экспериментируйте