Операторы, математические функции и функции работы с плоскостями

Операторы

Оператор Описание
+ Сложение
- Вычитание
% Модуль с плавающей точкой
* Умножение
/ Деление
^ Возведение в степень
() Круглые скобки
. Десятичный разделитель

При вычислении выражений используется следующий стандартный порядок расчета:

  1. Вычисляются выражения в скобках, начиная со скобок максимальной вложенности;
  2. Операторы в стандартном порядке:

    • унарное отрицание (отрицательное значение);
    • возведение в степень;
    • умножение и деление;
    • сложение и вычитание.
  3. Операции с равными приоритетами выполняются слева направо.

Математические функции

Функция Комментарий
cos(alfa)

Тригонометрическая функция косинуса. alfa - угол в градусах. Возвращает вещественное число.

sin(alfa)

Тригонометрическая функция синуса. alfa - угол в градусах. Возвращает вещественное число.

tg(alfa)

tan(alfa)

Тригонометрическая функция тангенса. alfa - угол в градусах. Возвращает вещественное число.

int(value)

trunc(value)

Функция округления вещественного числа до целого. Дробная часть числа отсекается. value - вещественное число. Возвращает целое число.

DegToRad(deg)

d2r(deg)

Функция конвертации градусов в радианы. deg - угол в градусах. Возвращает радианы.

RadToDeg(rad)

r2d(rad)

Функция конвертации радиан в градусы. rad - угол в радианах. Возвращает градусы.

abs(value) Функция получения модуля числа.

rtg(rad)

Тригонометрическая функция тангенса. rad - угол в радианах. Возвращает вещественное число.

acos(c)

Обратная тригонометрическая функция косинуса. c - число. Возвращает угол в градусах.

asin(c)

Обратная тригонометрическая функция синуса. c - число. Возвращает угол в градусах.

atg(c)

atan(c)

Обратная тригонометрическая функция тангенса. c - число. Возвращает угол в градусах.

sqrt(value)

Функция квадратного корня из числа.

min(a,b)

Функции получения минимального числа из пары чисел a и b.

max(a,b)

Функции получения максимального числа из пары чисел a и b.

iff(expr, a, b)

Функция - аналог логического оператора if. Возвращает a, если результат выражения expr >= 1, иначе b.

real(val)

Функция преобразования значения в вещественное число.

string(val)

Функция преобразования значения в строку.

log(val)

Функция вычисления десятичного логарифма, где val - вещественное число больше 0.

sinh Гиперболический синус
cosh Гиперболический косинус
tanh Гиперболический тангенс
asinh Гиперболический арксинус
acosh Гиперболический арккосинус

atanh

Гиперболический арктангенс

exp

Степень, основание е

exp10

Степень, основание 10

ln

Логарифм, основание е

pow

Функция возведения в степень

floor

Округление в меньшую сторону

ceil

Округление в большую сторону

round

Округление до ближайшего целого числа

sign

Функция определения знака числа 1-положительное, -1 - отрицательное, 0 - ноль.

Функции работы с плоскостями

Функция Комментарий
VecLen(vec)

Функция получения длины вектора vec.

VecUnit(vec) Функция получения нормированного вектора (единичной длины) из vec.
anglePi(vec1, vec2) Функция возвращает угол между векторами vec1 и vec2 в интервале от 0 до PI.
angleTwoPi(vec1,vec2) Функция возвращает угол между векторами vec1 и vec2 в интервале от  0 до 2*PI.
rotateBy(vec1,rAngle,vecNormal) Функция выполняет поворот вектора vec1 на угол rAngle (в градусах) в плоскости, имеющей нормаль vecNormal. Возвращает результат операции.
getPerpendicular(pnt1,pnt2,pntFrom,pntBase) Функция возвращает длину перпендикуляра, построенного из точки pntFrom на прямую, заданную точками pnt1 и pnt2. В переменной pntBase возвращается точка основания полученного перпендикуляра на указанной прямой.
getMiddle(pnt1, pnt2) Функция возвращает точку середины отрезка, заданного точками pnt1 и pnt2
getPerp(vec) Функция возвращает вектор ортогональный вектору vec.

getMirrowPnt(pnt1,pnt2,pnt3)

Функция возвращает зеркальную версию точки pnt3 относительно оси заданной точками pnt1 и pnt2

getLinesIntersect(pnt1,vec1,pnt2,vec2) getLinesIntersect(pnt11,pnt12,pnt21,pnt22)

Функция возвращает точку пересечения прямых задаваемых либо парами точек [pnt11,pnt12] и [pnt21,pnt22] либо точкой и вектором: [pnt1,vec1] и [pnt2,vec2].

Если прямые не пересекаются, то в возвращаемой точке координата Z равна -1.

Point()

Point(x, y, z)

Point(plane)

Функция возвращает точку. Может использовать в качестве конструктора точки. Без аргументов возвращает точку P(0,0,0). Если аргумент - плоскость, то извлекает из нее базовую точку.

Vector()

Vector(x, y, z)

Vector(plane)

Функция возвращает вектор. Может использовать в качестве конструктора вектора. Без аргументов возвращает вектор V(1,0,0). Если аргумент - плоскость, то извлекает из нее нормаль.

Plane(pntBase,vecNormal)

Функция - конструктор плоскости. Возвращает плоскость, проходящую через точку pntBase и имеющую нормаль vecNormal.

VecCodirect(vec1,vec2) Функция проверки сонаправленности векторов vec1 и vec2. Возвращает 1 если vec1 сонаправлен vec2, иначе 0.
projectOnPlane(pnt,plane2,rDistance) projectOnPlane(plane1,plane2,rDistance)

Функция возвращает проекцию точки pnt на плоскости, находящейся на расстоянии rDistance от плоскости plane2.

Если в качестве первого аргумента передается плоскость, то функция вернет плоскость, проходящую через проекцию точки Point(plane1) на плоскости, находящейся на расстоянии rDistance от плоскости plane2, и имеющую вектор нормали, совпадающий с вектором нормали плоскости plane2.

getLocalNormal(vec1,vec2)

Функция возвращает векторное произведение вектора vec1 на вектор vec2.

FmtText(text, number, formated_text,...,)

Возвращает rtf текст, если среди параметров есть хотя бы один форматированный, обычный - в противном случае.

На вход функции может подаваться переменное количество параметров, в качестве параметров могут использоваться выражения.

FmtSub(Text) FmtSuper() - возвращает rtf текст форматированный как Superscript(верхний индекс) Text может быть строкой или числом
FmtSuper(Text) FmtSub() - соответственно, для Subscript (нижний индекс). Text может быть строкой или числом
FmtDiv(Text1, Tex2, Splash) FmtDiv() - возвращает дробь,

 если Splash != 0 то у дроби будет разделитель.

Пример использования:

a = "super";
b= 1;
c = 3;
strPosition = FmtText(
 "Начало текста ",
 "Верхний индекс-", FmtSuper(a), 
 "Нижний индекс-", FmtSub("sub"),
 " Дальше просто текст ",
 "Дробь- ",FmtDiv(b, c, TRUE),
 "Дробь без разделителя-",FmtDiv(b, c, FALSE)
);
FmtDigit(rNumber, rDelimeter)

Возвращает строку форматированным десятичным разделителем.

rNumber - число или строка, содержащая число,

если rDelimeter == 0 то разделитель - точка,

 если rDelimeter == 1 то разделитель запятая,

 если rDelimeter == 2 то разделитель берется из системных настроек.

Пример:

a = 1.5;
Formatted = FmtDigit(a, 1) 
На выходе Formatted = "1,5"
Вычитание точки из плоскости

Пример:

 d = WP - pnt;

Операция возвращает знаковое расстояние точки pnt от плоскости WP. Если точка pnt находится со стороны, куда указывает нормаль плоскости WP, то расстояние положительное, иначе - отрицательное.

Форматирование строки числами

К строковой переменной можно «добавить» число - результатом будет строка.

Пример:

 A = 1;
 B = 5;
 Str = "Type " + A + ". Modification " + B + ".";

Результатом будет строка

"Type 1. Modification 5."