ОПЕРАТОРЫ ГРУППОВОГО ПРЕОБРАЗОВАНИЯ КООРДИНАТ
В ANT встроены следующие операторы группового преобразования координат:
- MOVE (dx, dy, dz) - смещение на указанную величину: [x, y, z] + [dx, dy, dz] = [x + dx, y + dy, z + dz]
- SCALE (mx, my, mz) - умножение на указанную величину: [x, y, z] * [mx, my, mz] = [x * mx, y * my, z * mz]
- ROTATE (ax, by, cz) - поворот вокруг оси OX на угол ax, потом поворот вокруг оси OY на угол by, потом поворот вокруг оси OZ на угол cz (крен, тангаж, рысканье).
- ROTATE ([vx, vy, vz], a) - поворот вокруг заданного вектора [vx, vy, vz] на угол a (Квантернион).
Операторы SCALE и ROTATE по умолчанию выполняются относительно начала координат. Однако, возможно переопределить системную переменную CENTER = [x,y,z]. После чего указанные преобразования будут выполняться относительно указанной точки.
Область действия оператора определяется текущей областью видимости. При этом оператор воздействует на все определенные точки от начала указанной области до самого оператора.
Например:
Код:
ANT()
{
< t1 t2 .. >
{ ### начало локальной области видимости
< t3 t4 .. >
< t5 t6 .. >
MOVE (dx,dy,dz) # действует на < t3 t4 .. > и < t5 t6 .. >
< t7 t8 .. >
} ### конец локальной области видимости
SCALE (1,1,-1) # действует на всех кроме < t9 t10 .. >
< t9 t10 .. >
}
Здесь оператор MOVE (dx,dy,dz) воздействует на провода < t3 t4 .. > и < t5 t6 .. > Провод < t1 t2 .. > и < t9 t10 .. > находятся вне области видимости. Провод < t7 t8 .. > тоже, т.к. к моменту исполнения оператора еще не определен. Оператор SCALE (1,1,-1) воздействует на все провода кроме < t9 t10 .. >.