![](/images/openglorg07/openglorg07-1008.png)
XPresso-выражение приведено на рис. 8.120
![](/images/openglorg07/openglorg07-1009.png)
Идея заключается в том, что на порт ввода узла L_Leg (левая нога) заводится сигнал длительностью, в данном случае, 3 с (по умолчанию длительность анимации 3 с на 90 кадров). Причем первую половину этого времени сигнал положительный, а вторую - отрицательный. В результате в первую половину времени нога будет двигаться назад, а во вторую - вперед. Чтобы сформировать такой сигнал, используем тригонометрическую функцию Sin(). Для этого на рис. 8.121 предусмотрен узел Trigonometric, в окне менеджера атрибутов которого выбрана функция Sin (рис. 8.121).
Если на порт ввода Value узла Trigonometric подать сигнал с порта вывода узла Time, который выдает текущее время анимации,
![](/images/openglorg07/openglorg07-1010.png)
то это значение будет использовано как аргумент функции Sin. Однако его будет недостаточно, чтобы сформировать отрицательный полупериод для Sin.
Действительно, максимальное значение параметра Time равно 3. В функции Sin это значение будет воспринято как 3 радиана, что меньше 180° (число Пи, равное 3.14, соответствует 180°), а в полупериоде 0 - 180° Sin положительный.
Чтобы увеличить значение параметра, подаваемого на вход Value узла Trigonometric, между узлами Time и Trigonometric предусмотрен узел MathMultiply на два входа. Узел MathMultiply создается из узла MathAdd, для которого в списке Function окна менеджера атрибутов выбрана арифметическая операция Multiply (рис. 8.122). На порт Input (1) от узла Time заводится текущее время анимации, а на порт ввода Input (2) задаем значение коэффициента, на который будет умножен сигнал порта Input (1). Если умножить на 2, то есть получить значение аргумента от 0 до 6, то Sin сможет сформировать положительный и отрицательный полупериоды. В поле Input (2) окна менеджера атрибутов вводим 2 (рис. 8.122).
![](/images/openglorg07/openglorg07-1011.png)
Запустите анимацию и убедитесь, что левая нога движется, как планировалось. На рис. 8.123 приведены кадры 35 и 70.
![](/images/openglorg07/openglorg07-1012.png)
Узел VectorToMatrix
Позволяет преобразовывать вектор в матрицу Вектор можно задать в полях параметра Input (рис. 8.124).
![](/images/openglorg07/openglorg07-1013.png)
Чтобы увидеть результат преобразования этого вектора в матрицу, подключите узел Result, установив его тип данных Vector (рис. 8.125).
![](/images/openglorg07/openglorg07-1014.png)
8.2.5. Группа Logic
Группа содержит узлы, выполняющие логические операции. Перечень узлов приведен на рис. 8.126.
![](/images/openglorg07/openglorg07-1015.png)
Узел Compare
Позволяет сравнивать два параметра между собой. Параметры могут быть цветом, материалом, числами целого и действительного типа, векторами, временем, текстовой строкой. Тип данных окна менеджера атрибутов приведен на рис. 8.127.
Значения параметров можно заводить с других узлов или задавать в полях Ввод 1 и Ввод 2 группы Параметр (рис. 8.124).
Функция сравнения выбирается из списка Функция, где приведены знаки отношения, смысл которых очевиден, кроме знака != не равно (рис. 8.128).
Слева от знака сравнения предполагается информация с порта Ввод 1, справа - информация с порта Ввод 2.
Результатом проверки будет информация логического типа: 1, если условие проверки выполняется (Истина,True), и 0, если условие не выполняется (Ложь, False).