Теория · Сайтсвоп и нотации
Продолжение перевода технической документации по Juggling Lab
▶ Видео: Fun with Juggling Lab
Предыдущая часть касалась особенностей ввода паттернов в нотации сайтсвопа. Но сайтcвоп не единственный параметр, определяющий трюк. Рассмотрим же ещё несколько ключевых особенностей, доступных в Juggling Lab.
Оригинал документации расположен по адресу https://jugglinglab.org/html/sspanel.html.
Использование панели ввода паттерна
Заголовок раздела «Использование панели ввода паттерна»Панель ввода паттернов — место для ввода паттерна жонглирования, а также, по желанию, для регулировки движений рук по времени. Внешний вид показан ниже.

Состоит из:
- Pattern. Поле для ввода паттерна жонглирования с использованием нотации сайтсвопа.
- Beats per second (число тактов в секунду). Положительное число (т. е. больше 0.0), соответствующее количеству тактов, приходящихся на каждую секунду. Как правило, в среднем получается один бросок на такт. Если оставить это поле пустым, Juggling Lab вычислит значение самостоятельно, исходя из введённого паттерна. Как правило, значение лежит между 3.0 и 5.5 тактов в секунду.
- Dwell beats (такты удерживания). Число между 0.0 и 2.0, равное числу тактов, которое пройдет от кетча до последующего броска. Значение по умолчанию равно 1.3.
- Hand movement (движение рук). Движение рук задаётся текстовой строкой в формате, описанном ниже. Выпадающий список позволяет выбрать из нескольких встроенных шаблонов движений рук. По умолчанию, Juggling Lab определяет движение рук основываясь на введённом паттерне.
- Body movement (перемещение тела). Перемещение тел жонглёров задается текстовой строкой в формате, описанном ниже. Выпадающий список позволяет выбрать из нескольких встроенных шаблонов движений тела. По умолчанию, Juggling Lab определяет положение тела исходя из количества жонглёров.
- Prop type (Вид реквизита). В выпадающем списке можно выбрать используемый реквизит.
- Manual settings (ручные настройки). Ручные настройки для конфигурации паттерна; смотреть описание ниже.
- Defaults button (кнопка По умолчанию). Нажмите, чтобы восстановить исходные настройки.
- Juggle button (кнопка Жонглировать). Нажмите, чтобы увидеть анимацию паттерна.
Формат движений рук
Заголовок раздела «Формат движений рук»Текстовая строка, описывающая движение рук, позволяет определить пространственное расположение рук как для времени каждого броска и кетча, так и для временных точек между ними. Juggling Lab использует сплайновый интерполяционный алгоритм, вычисляющий расположение руки в любой момент времени на основании координат, определённых для дискретных временных точек. Формат довольно гибкий и позволяет определить движения рук произвольной сложности.
Представьте себя на месте жонглёра, и определите систему координат с осью x, идущей перед вами слева направо (положительное направление справа), осью y, проходящей сзади наперед (положительное направление спереди), и осью z, идущей снизу вверх (положительное направление сверху). Точка (x, y, z) = (0,0,0) лежит посередине вашего тела, в "обычной" плоскости жонглирования перед вами, и на высоте, соответствующей положению предплечий над землей. В дальнейшем, движение руки будет определяться в координатах этой системы.
В простейшем случае имеем дело с одним жонглёром, у которого определены только позиции броска и кетча. В этом случае текстовая строка состоит из ряда пар координат в формате "(throwx,throwz,throwy)(catchx,catchz,catchy)." (здесь и далее: throw — бросок, catch — ловля). Пары записаны в порядке привязки к броскам паттерна сайтсвопа. Все размеры указываются в сантиметрах. Обратите внимание, что координаты y и z поменялись местами; это сделано из соображений удобства, так как компоненты, не указанные в конце, будут по умолчанию принимать значение 0. Например, (30,10) сокращенная форма записи (x=30,z=10,y=0). Другие факты:
- Если пара координат привязывается к броскам или кетчам с левой руки, то значения
throwxиcatchxавтоматически меняются на противоположные по знаку - Указанное число пар не обязательно должно быть равно количеству бросков в сайтсвопе — когда броски доходят до конца, просто делается петля обратно к началу. Подобным образом, движение руки может иметь больше тактов, чем паттерн.
- При применении к синхронному сайтсвопу, координаты связываются с бросками в порядке, в котором они были записаны. Например, для паттерна
(4x,6x)первая координата руки будет привязана к леворучной'4x', следующая пара к праворучной'6x', и т. д.
В качестве примера, стандартный стиль внутренних бросков "(10)(32.5)." соответсвует броскам, совершаемым на расстоянии в 10 см от центральной линии (без перепада высот) с последующим кетчем на расстоянии в 32.5 см от центральной линии (также без перепада высот). Стандартный стиль для миллс месса "(-30)(2.5).(30)(-2.5).(-30)(0).", если вдруг захочется разобраться в этой головоломке.
Разделители '.', в приведенных выше примерах, соответствуют тактам в паттерне сайтсвопа. Например, при 5 бросках в секунду в асинхронном паттерне, броски будут выполняться в 0.0 секунды, 0.2 секунды, 0.4 секунды, и т. д. Время кетчей определяется исходя из настроек времени удерживания. (Единственные броски, которые не соответствуют тактам в точности, это '1', которые бросаются чуть раньше и ловятся чуть позже.)
Положение руки в остальное время (кроме точек броска и кетча) также может быть определено путем введения дополнительных координат в каждый такт. Например, движение руки "t(10)c(32.5)(0,45,-25)." соответствует "поеданию яблока на каждом такте". В этом случае рука по-прежнему бросает и ловит внутренними бросками, но также определено положение руки (0,45,-25) во время, в точности соответствующем половине пути между каждым кетчем и последующим броском. Отметьте использование 't' и 'c' для индикации того, какие именно координаты относятся к позициям броска и кетча. Несколько правил:
- Спецификаторы
't'и'c'не являются обязательными; если они не определены, первая координата считается броском, а последняя координата — кетчем. - Спецификатор
't'всегда должен присоединяться к первой координате. - Если указано несколько дополнительных позиций (т. е., кроме позиций броска/кетча), то они привязываются к равномерно распределенным временным интервалам между бросками и кетчами. Представьте себе линию времени нарисованную на резиновом листе, и представьте как этот лист растягивается по времени, чтобы соответствовать известным временам бросков и кетчей; другие координаты после этого будут располагаться равномерно между этим определёнными временами.
- Вы можете располжить
'-'вместо координат, если хотите занять временную точку, но не хотите определять координаты руки. В качестве примера рассмотрим стиль"t(10)(0)-(50)c(32.5).". В этом случае паттерн таков, что первый бросок и кетч делаются во времена t=0.00 и t=0.20 секунды соответственно. Затем, в представленом примере, заданное положение руки(0)соответствует t=0.05,(50)привязывается к t=0.15, а положение руки для t=0.10 остаётся неопределённым. - Позиции бросков и кетчей не могут быть привязаны к значению
'-', т. е., эти положения всегда должны быть определены.
Наконец, если имеем дело с несколькими жонглёрами, по умолчанию считается, что к ним применяется один стиль движений рук. Чтобы определить различные движения рук для каждого жонглёра используется формат "<(движения для жонглёра 1)|(движения для жонглёра 2)| ... >". Например, использование "<t(10)c(32.5)(0,45,-25).|(-30)(2.5).(30)(-2.5).(-30)(0).>" для паттерна <3|5> даст двух жонглёров, один из которых "поедает яблоко", а другой делает миллс месс 5-ю мячами.
Формат перемещения тела
Заголовок раздела «Формат перемещения тела»Текстовая строка, определяющая перемещение тела, позволяет определить угол поворота и положение тела каждого жонглёра, как функцию от времени. Формат похож на формат движений рук, но с некоторыми отличиями:
- Отличается формат координат:
(angle, bodyx, body, bodyz), где"angle"угол поворота относительно оси z. Другие координаты"bodyx","bodyy", и"bodyz"записываются в глобальной системе координат, в отличие от координат руки, которые определяются в локальной системе координат центрированной относительно каждого жонглёра. Для одного жонглёра координаты по умолчанию(angle,bodyx,bodyy,bodyz)=(0,0,0,100).bodyz=0соответствует высоте пола. - Координаты не привязаны к броскам и кетчам, но расположены равномерно по времени внутри каждого такта паттерна. Спецификаторы
't'и'c'не используются. - Нет необходимости определять кооординаты на каждом такте. Например, строка
"(0)....(90)....(180)....(270)...."определяет жонглёра, медленно вращающегося в фиксированной позиции, с общим периодом в 16 тактов. - Одно и то же перемещение тела не может быть применено к более чем одному жонглёру. При перекидках, положение тела должно быть указано отдельно для каждого жонглёра, с использованием формата разделителей
'<|>'аналогично движению рук. (Если количество жонглёров в перемещении тела больше их количества в паттерне, то данные по перемещениям лишних жонглёров игнорируются)
Примеры перемещений тела:
"<(90).|(270,-125).|(90,125).|(270,-250).|(90,250).|(270,-375).>"= 6 жонглёров, стоящих в одну линию."(0,75,0)...(90,0,75)...(180,-75,0)...(270,0,-75)..."= один жонглёр медленно прогуливается по кругу с общим периодом в 12 тактов."(0)(90)(180)(270)."= несколько дурацкий пример, определяющий одного жонглёра, делающего пируэт против часовой стрелки на каждом такте. (Заметьте, что как и с настройками движений рук, на одном такте могут быть определены несколько координат. Заполнители'-'также могут быть использованы.)"(0).(0).(0).(0).(0).(0,0,0,150)."= один жонглёр прыгает вверх и вниз.
Ручные настройки для конфигурации паттерна
Заголовок раздела «Ручные настройки для конфигурации паттерна»Данный метод ввода обеспечивает ручной контроль паттерна сайтсвопа. Всё, что может быть определено в других частях панели ввода также может быть введено вручную в этом поле. Ручные настройки переопределяют настройки, сделанные в других частях панели ввода.
Формат записи представляет из себя текстовую строку, состоящую из настроечных параметров, разделенных точкой с запятой. Например "pattern=(4x,4x);bps=6.0;hands=(32.5)(10).". Перечень доступных параметров:
pattern– анимируемый паттерн, записанный в нотации сайствопа. По умолчанию не определён.bps– число тактов в секунду (beats per second) в формате числа с плавающей точкой. По умолчанию автоматически вычисляется исходя из паттерна.dwell– количество тактов, проходящее от кетча до следующего броска. Значение — число с плавающей запятой между 0.0 и 2.0; по умолчанию 1.3.hands– последовательность пространственных координат движений руки в формате, описанном выше.body– последовательность углов поворота и пространственных координат в формате, описанном выше.colors– определяет окраску реквизита. Каждый цвет может быть определён по названию или по его красным/зеленым/синим (red/green/blue) составляющим по шкале от 0 до 255. Таким образом, если настройки будут{red}или{255,0,0}, на анимации будет использован красный реквизит. Если определено несколько цветов, то они будут привязаны к мячам в циклической манере. Например,{255,0,0}{0,255,0}будет означать, что мяч 1 красный, мяч 2 зеленый, мяч 3 красный, мяч 4 зелёный, и т. д. Распознаются следующие имена цветов:black, blue, cyan, gray, green, magenta, orange, pink, red, yellow. Использование значенияmixed(без скобок) будет соответвовать предопределённому смешению цветов. По умолчанию цвет красный.propdiam– диаметр реквизита в сантиметрах. Число с плавающей точкой больше чем 0.0; по умолчанию равно 10.0.prop– вид используемого реквизита. Распознаются следующие виды реквизита:ball,image, иring; по умолчаниюball.gravity– ускорение свободного падения, в см/с2. Число с плавающей точкой; по умолчанию равно 980.0 (стандартная земная гравитация).bouncefrac– часть энергии мяча, сохраняющейся после отскока от пола (на какую долю от высоты сброса он вернется?). Значение является положительным числом с плавающей точкой; по умолчанию 0.9.
В дополнение к этим настройкам, в поле ввода ручных настроек также можно ввести любой из следующих параметров настройки анимации .
Повторение записи
Заголовок раздела «Повторение записи»Juggling Lab позволяет сократить ввод текста, который имеет повторяющиеся разделы. Для этого надо выделить повторяющуюся часть в скобки, а затем приписать к ней '^' и количество повторений. Например, следущие две записи эквивалентны:
<3|3|3|3|3><3(|3)^4>
Подобная форма записи повторений может быть использована для задания значений pattern, hands, body, и colors.
прим. переводчика — отмечу, что подобное сокращение повторяющихся разделов доступно только для версий Juggling Lab'a начиная с 1.2. В более ранних версиях данный формат недоступен.