
- •Базовые классы maxScript Класс Value
- •Операторы
- •Литералы
- •Операторы
- •Свойства
- •Операторы
- •Точка в трехмерном пространстве
- •Литералы
- •Конструкторы
- •Свойства
- •Операторы
- •Литерал
- •Конструкторы
- •Свойства
- •Произвольный поворот
- •Литералы
- •Конструкторы
- •Операторы
- •Свойства
- •Углы Эйлера
- •Операторы
- •Свойства
- •Прямоугольник
- •Литералы
- •Конструкторы
- •Свойства
- •Операторы
Свойства
Для конкретного цвета можно получить его цветовые составляющие.
Цвет.red
Цвет.r
возвращает красную компоненту,
Цвет.green
Цвет.g
зеленую,
Цвет.blue
Цвет.b
синюю, и, наконец
Цвет.alpha
Цвет.a
прозрачность. Можно получить или установить составляющие цвета в кодировке оттенок/насыщенность/яркость
Цвет.hue
Цвет.h
возвращает оттенок,
Цвет.saturation
Цвет.s
насыщенность,
Цвет.value
Цвет.v
яркость.
Операторы
Для цветов, кроме обычных операторов сравнения, равенства и неравенства
Цвет_1 = = Цвет_2
Цвет_1 ! = Цвет_2
Определены и арифметические операции сложения, умножения, вычитания и деления
Цвет_1 + Цвет_2
Цвет_1 * Цвет_2
Цвет_1 - Цвет_2
Цвет_1 / Цвет_2
Указанные действия выполняются покомпонентно, то есть, например, при сложении значение красной компоненты первого цвета складывается со значением красной компоненты второго и т.д. Определен так же унарный минус
- Цвет
который обращает знаки всех компонент цвета.
Методы
Определен метод копирования, создающий новый объект цвета
copy Цвет
Возможна также генерация случайного цвета
random Цвет_1 Цвет_2
компоненты полученного таким образом цвета лежат в диапазоне компонент указанных цветов. Имеется метод для композиции двух цветов с учетом компоненты прозрачности первого
composite Цвет_1 Цвет_2
Эта функция вычисляет итоговый цвет по формуле
Цвет_1 + Цвет_2 * ((255 - Цвет_1.alpha) / 255)
И, наконец, функции создания помех
noise3 Цвет
noise4 Цвет Число
turbulence Цвет Число
fractalNoise Цвет Число_1 Число_2 Число_3
Подробнее эти функции будут рассмотрены в разделе, посвященном точкам в трехмерном пространстве.
Точка в трехмерном пространстве
Точка в трехмерном пространстве определяется тремя координатами, которые представляют собой вещественные числа. В зависимости от задачи, точка может интерпретироваться и как вектор.
Литералы
Точка в трехмерном пространстве записывается своими координатами X, Y и Z, разделенными запятыми и заключенными в квадратные скобки.
[ Координата_X , Координата_Y , Координата_Z ]
В качестве координат могут выступать как числа, так и сколь угодно сложные выражения, результатом которых будут вещественные или целые числа. Имеются три предопределенных значения
x_axis -- то же что [ 1 , 0 , 0 ]
y_axis -- то же что [ 0 , 1 , 0 ]
z_axis -- то же что [ 0 , 0 , 1 ]
соответственно обозначающие единичные вектора, направленные по осям X, Y и Z.
Конструкторы
Точка в трехмерном пространстве очевидным образом задается своими координатами
point3 Число_1 Число_2 Число_3
Указанные числа задают координаты соответственно X, Y и Z. Кроме этого точка может быть преобразована из цвета
Цвет as point3
При этом координата X будет равна красной составляющей цвета, Y – зеленой, Z – синей.
Свойства
Точка в трехмерном пространстве имеет только три свойства, обеспечивающих доступ к ее координатам
Точка_в_3D_пространстве.x
Точка_в_3D_пространстве.y
Точка_в_3D_пространстве.z
Операторы
Для точек в трехмерном пространстве определены две операции сравнения – равенство и неравенство
Точка_в_3D_пространстве_1 = = Точка_в_3D_пространстве_2
Точка_в_3D_пространстве_1 ! = Точка_в_3D_пространстве_2
Определены и операции сложения, умножения, вычитания и деления
Точка_в_3D_пространстве_1 + Точка_в_3D_пространстве_2_или_число
Точка_в_3D_пространстве_1 * Точка_в_3D_пространстве_2_или_число
Точка_в_3D_пространстве_1 - Точка_в_3D_пространстве_2_или_число
Точка_в_3D_пространстве_1 / Точка_в_3D_пространстве_2_или_число
Эти операции перемножают, складывают, вычитают и делят соответствующие координаты точек. Например, если есть точка p1 с координатами x1,y1 и z1 и точка p2 с координатами x2, y2 и z2, то произведение p1*p2 будет иметь координаты x1*x2, y1*y2 и z1*z2. При умножении или сложении точки с числом каждая координата этой точки перемножается или складывается с этим числом. Что касается деления и вычитания точки и числа, то здесь необходимо учитывать некоторую тонкость. Представим себе, что мы решили вычесть из определенной выше точки p1 число a. В этом случае координаты результирующей точки p1-a будут x1-a, y1-a и z1-a. Все правильно, а теперь попробуем вычесть из числа a точку p1. Логично было бы ожидать, что результат a-p1 будет иметь координаты a-x1, a-y1 и a-z1. Ничуть не бывало, при вычитании точки и числа имеет место парадоксальное равенство p1-a = a-p1. То же касается и деления – p1 / a окажется равно a / p1.
Точка может умножаться и на матрицу 4х3
Точка_в_3D_пространстве * Матрица_4х3
при этом умножение можно производить только в таком порядке – точку на матрицу, но не наоборот – матрицу на точку. Результатом будет преобразование координат точки в соответствии с заданной матрицей. Аналогичная картина наблюдается и при умножении точки на кватернион
Точка_в_3D_пространстве * Кватернион
Результат такого умножения – поворот точки в пространстве в соответствии с кватернионом. Точно так же, как в случае с матрицей, порядок записи компонентов при умножении важен.
Последним оператором, определенным для точки, является унарный минус.
- Точка_в_3D_пространстве
Он обращает знаки всех координат точки.
Методы
Для точки в трехмерном пространстве определена функция копирования
copy Точка_в_3D_пространстве
Функция
length Точка_в_3D_пространстве
возвращает длину вектора, то есть квадратный корень из суммы квадратов координат. Скалярное произведение двух векторов вычисляется с помощью функции
dot Точка_в_3D_пространстве_1 Точка_в_3D_пространстве_2
Точки при этом выступают как вектора. Векторное произведение векторов рассчитывается с помощью функции
cross Точка_в_3D_пространстве_1 Точка_в_3D_пространстве_2
Чтобы нормализовать вектор, то есть, оставив прежним направление, сделать его длину равной единице, применяют функцию
normalize Точка_в_3D_пространстве
Функция
distance Точка_в_3D_пространстве_1 Точка_в_3D_пространстве_2
вычисляет величину расстояния между двумя точками в трехмерном пространстве. Генерацию случайной точки в трехмерном пространстве осуществляет функция
random Точка_в_3D_пространстве_1 Точка_в_3D_пространстве_2
при этом координаты результирующей точки лежат в диапазоне координат указанных точек. Имеется две функции, генерирующие матрицу по заданной точке. Первая из них
arbAxis Точка_в_3D_пространстве
возвращает матрицу 4х3, определяющую произвольную систему координат, ось Z которой направлена по вектору, определяемому указанной точкой. Часть матрицы, соответствующая перемещению точки (четвертая строка) нулевая. Коэффициенты масштабирования по всем осям – единичные. Вторая функция
matrixFromNormal Точка_в_3D_пространстве
так же генерирует матрицу, определяющую систему координат. Ее ось Z, то есть третья строка матрицы, в точности повторяет координаты заданной точки. Четвертая строка результирующей матрицы – нулевая. Что касается коэффициентов масштабирования, то они определяются как единица, деленная на коэффициент, нормализующий вектор, заданный исходной точкой.
Для точек в трехмерном пространстве определены функции генерации помех.
noise3 Точка_в_3D_пространстве
реализует псевдослучайный трикубический сплайн. Возвращает вещественное число в диапазоне от минус до плюс единицы. При задании одной и той же точки, возвращаемый результат всегда один и тот же.
noise4 Точка_в_3D_пространстве Число
Работает так же, как и noise3, но параметры сплайна могут варьироваться с помощью второго параметра.
turbulece Точка_в_3D_пространстве Число
Имитирует турбулентную помеху. Частота турбулентности задается вторым параметром, возвращаемое значение – вещественное число в диапазоне от нуля до плюс единицы. И последняя функция генерации помех
fractalNoise Точка_в_3D_пространстве Число_1 Число_2 Число_3
три последних числа представляют собой параметры фрактальной помехи. Первый параметр должен находится в диапазоне от нуля до плюс единицы. При значении нуль генерируется белый шум, при единице выходное значение относительно гладкое. Второй параметр – промежуток между частотами, рекомендуемое значение – 2.0. Третий – количество частот в выходном значении. Для примера рассмотрим скрипт, реализующий текстуры с помощью перечисленных функций помех.
b_width = 320 -- ширина результирующей текстуры
b_height = 320 -- высота результирующей текстуры
size=10.0 -- расстояние между крайними точками
-- по горизонтали и вертикали
z = 0. -- z координата точек
phase = 0.5 -- дополнительный параметр для noise4
frequency = 10. -- параметр турбулентности
fract_interval = 0.5 -- параметры функции fractalNoise
lacunarity = 2.0
octaves = 5
-- **********************************************************
whichfunc=1 -- номер функции помех
-- 1 = noise3; 2 = noise4; 3 = turbulence; 4 = fractalNoise
-- **********************************************************
b = bitmap b_width b_height -- создадим текстуру как битовую карту
for h = 0 to (b_height-1) do -- цикл по высоте текстуры
( h_norm = (h as float/(b_height-1))*size -- расчет координаты Y
row = for w=0 to (b_width-1) collect -- соберем массив цветных точек
( w_norm=(w as float/(b_width-1))*size -- расчет координаты X
noise_val = case whichfunc of -- выбор функции помехи
( 1: noise3 [w_norm, h_norm , z]
2: noise4 [w_norm, h_norm , z] phase
3: turbulence [w_norm, h_norm , z] frequency
4: fractalNoise [w_norm, h_norm , z] fract_interval lacunarity octaves
)
noise_val = 0.5*(1.+noise_val) -- перевод выходного значения в
-- диапазон от 0.0 до 1.0
white*noise_val -- цвет точки получается умножением
-- результата на белый цвет
)
setpixels b [0,h] row -- заполним строку текстуры получившимися точками
)
display b -- вывод получившейся текстуры
Заменяя номер функции в строке, выделенной звездочками, можно получить следующие картинки
noise3 (1)
noise4 (2)
turbulence (3)
fractalNoise
(4)
Точка в двумерном пространстве
Литерал
Точка в двумерном пространстве записывается, как два выражения, соответствующих координатам x и y, заключенные в квадратные скобки и разделенные запятой. Например
[ 1.3, 2 * x + 1]
Конструкторы
point2 Число_1 Число_2
Определяет точку с координатами X – первое число и Y – второе число.
Например
point2 (x + 2) (y - 3)
Можно преобразовать точку в трехмерном пространстве в точку в двумерном
Точка_в_3D_пространстве as point2
При таком преобразовании координата Z отбрасывается.
Свойства
Точка в двумерном пространстве имеет два свойства, координату X и координату Y
Точка_в_2D_пространстве.x
Точка_в_2D_пространстве.y
Например
Pnt2 = [ 2.5 , 3.14 ]
print Pnt2.x
print Pnt2.y
Операторы
Для точек в двумерном пространстве определены два оператора сравнения
Точка_в_2D_пространстве_1 = = Точка_в_2D_пространстве_2
Точка_в_2D_пространстве_1 ! = Точка_в_2D_пространстве_2
Соответственно равенство и неравенство двух точек.
Унарный минус
- Точка_в_2D_пространстве
меняет знаки координат точки на обратные.
Стандартные арифметические операции над точками
Точка_в_2D_пространстве * Точка_в_2D_пространстве
Точка_в_2D_пространстве / Точка_в_2D_пространстве
Точка_в_2D_пространстве + Точка_в_2D_пространстве
Точка_в_2D_пространстве - Точка_в_2D_пространстве
определяются как соответствующие операции над координатами точек. То есть, если, например, перемножить точку с координатами x1 и y1 на точку x2 и y2, то получится точка x1*x2 и y1*y2.
Те же операции определены для числа и точки в двумерном пространстве. При этом действует то же правило, что и для точек в трехмерном пространстве.
Методы
Метод копирования
copy Точка_в_2D_пространстве
возвращает копию указанной точки.
Случайная точка
random Точка_в_2D_пространстве_1 Точка_в_2D_пространстве_2
генерирует точку со случайными координатами, находящимися в диапазоне координат первой и второй указанной точки.
Длина вектора
length Точка_в_2D_пространстве
вычисляет длину вектора, определенного указанной точкой
Расстояние
distance Точка_в_2D_пространстве_1 Точка_в_2D_пространстве_2
вычисляет расстояние между указанными точками.
Нормализация
normalize Точка_в_2D_пространстве
возвращает координаты вектора, который имеет единичную длину и то же направление, что и вектор, определенный указанной точкой.
Луч
Под лучом в MAXScript понимается объект в трехмерном пространстве, который состоит из точки (начало луча) и направления.