Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MAXScript Part 2.doc
Скачиваний:
4
Добавлен:
01.03.2025
Размер:
89 Кб
Скачать
☆

Логические операции

Логические операции применяются к операндам, значения которых равны true или false. Их всего три

операнд1 or операнд2 – логическое или

операнд1 and операнд2 – логическое и

not операнд1 – логическое отрицание (унарная операция)

Логические операции имеют более низкий приоритет, нежели математические или операции сравнения и выполняются в следующем порядке.

  • сначала отрицание – not;

  • затем логическое и – and;

  • последним логическое или – or.

Сокращенное выполнение логических выражений

Как и многие другие языки программирования MAXScript не всегда вычисляет логические выражения полностью. Возьмем для примера выражение

( x >10 ) or ( x < 0 )

MAXScript поступит так. Вначале он вычислит значение x > 10. Предположим оно равно true. В этом случае нет необходимости вычислять второе, поскольку правила логического или таковы, что при значении одного из операндов true, результат операции будет равен true вне зависимости от значения другого. Та же картина, но наоборот, наблюдается и для логического и. Если первый операнд равен false, то значение операции будет false обязательно, поэтому второй операнд вычисляться не будет. Использовать это свойство языка можно следующим образом. Известно, что функция вычисления синуса в MAXScript при обращении к ней с неопределенным значением (undefined), выдает ошибку. Чтобы не допустить ее при вычислении некоего ограничения, можно записать такое выражение

if x != undefined and sin x > 0 then …

Если бы оба выражения вычислялись обязательно, то при неопределенном x подобный оператор выдал бы ошибку. Благодаря сокращенному вычислению, сначала будет вычислено первое выражение (x != undefined), и убедившись что оно ложно, программа пропустит группу операторов после then и будет выполняться нормально.

Обращение к функциям

Языки программирования немыслимы без механизма обращения к стандартным и разработанным программистом функциям. Не исключение и MAXScript. Правила написания собственных функций разберем позднее, а пока рассмотрим, как обратится к стандартным. Сначала указывается имя функции, а затем список параметров, которые ей передаются. Параметры перечисляются через пробел, и в общие скобки, как это делается в большинстве языков программирования, не заключаются. Например

sin x

atan2 x y

Бывают функции, которые не имеют параметров вовсе или позволяют не указывать параметры, поскольку их значения могут предполагаться по умолчанию. К таким функциям относится, например, большинство функций создания графических примитивов (подробнее об этом будет рассказано при рассмотрении правил написания функций). В этом случае нельзя обращаться к функции, просто написав ее имя, надо написать после имени открывающуюся и закрывающуюся скобку. Например, такой скрипт

sphere( )

создаст в сцене сферу, а такой

sphere

ничего не создаст, хотя и ошибки не вызовет.

Позиционированные и именованные параметра

При вызове функций, имеющих небольшое число параметров, нетрудно запомнить, в каком порядке их надо перечислять при вызове. Например, функции вычисления синуса надо передать один параметр, тут перепутать трудно. А вот функция atan2, которая вычисляет арктангенс от x, поделенного на y, требует двух параметров. При этом надо указать первым x, а вторым y, но не наоборот. Параметры, которые должны передаваться в строго определенном порядке, называются позиционированными. Однако MAXScript поддерживает другой тип параметров, называемых именованными. Их можно вообще не передавать или передавать в любом порядке, но при этом надо указывать их имя. Вернемся к созданию сферы. Число параметров даже такого относительно простого примитива 3ds max весьма велико и если всякий раз при создании надо было бы перечислять их всех, да еще в строго установленном порядке, программирование на MAXScript превратилось бы в непосильную задачу. Упростить себе жизнь можно двумя путями. Можно просто не указывать параметров создаваемого объекта. Например, скрипт

sphere ( )

создаст сферу с некоторыми, определенными командой разработчиков 3ds max, параметрами. В частности радиус ее будет 25 единиц, цвет определится случайным образом, число сегментов – 16, и т.д. и т.п. Если же для нас важны, например, радиус и число сегментов создаваемой сферы, то можно создать ее так.

sphere segs:32 radius:16

В этом случае сфера будет создана с числом сегментов 32 и радиусом 16. При этом порядок перечисления параметров абсолютно не важен, ведь имя каждого параметра указывается перед его значением. Поэтому того же результата можно добиться и так.

sphere radius:16 segs:32

Значение параметра отделяется от его имени двоеточием. Именно так и передаются функции именованные параметры.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]