ACSUtils Wiki

An ACS library for ZDoom-based ports

User Tools

Site Tools


ru:functions:math

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
ru:functions:math [2016/04/26 21:17] djskaarjru:functions:math [2016/05/02 00:37] korshun
Line 55: Line 55:
 dist(3.0, -2.0) == 5.0; dist(3.0, -2.0) == 5.0;
 </code> </code>
 +
 +==== gcf ====
 +''num gcf(num a, num b)''
 +
 +Возвращает наибольший общий делитель двух чисел. Возвращённый делитель будет отрицательным, если одно или оба данных числа отрицательны.
 +
 +**Example**
 +
 +<code>
 +gcf(18,   24)   == 6;
 +gcf(18.0, 24.0) == 6.0;
 +gcf(-18,  -24)  == -6;
 +</code>
 +
  
 ==== max ==== ==== max ====
Line 105: Line 119:
   * round -- округляет до ближайшего целого числа   * round -- округляет до ближайшего целого числа
  
-Для каждого вида округления существует две функции. Те, что начинаются с "i" возвращают целое число. Другие, без "i" возвращают значение с типом данных fixed.+Таблица округления:
  
 +<code>
 +    round(x) floor(x)  ceil(x) trunc(x)
 +----- -------- -------- -------- --------
 + 2.3                2        3        2
 + 3.8                3        4        3
 + 5.5                5        6        5
 +-2.3        -2       -3       -2       -2
 +-3.8        -4       -4       -3       -3
 +-5.5        -5       -6       -5       -5
 +</code>
 +
 +Для каждого вида округления существует две функции. Те, что начинаются с "i" возвращают целое число. Другие, без "i" возвращают значение с типом данных fixed.
 ==== ceil ==== ==== ceil ====
 ''fixed ceil(fixed x)'' ''fixed ceil(fixed x)''
Line 135: Line 161:
 Возвращает число x без дробной части. Возвращает число x без дробной части.
  
-===== Numerical algorithms =====+===== Численные алгоритмы =====
  
 ==== lerp ==== ==== lerp ====
Line 171: Line 197:
  
 Sin и cos уже присутствуют в Zdoom. Sin и cos уже присутствуют в Zdoom.
- 
-==== cot ==== 
-''fixed cot(angle x)'' 
- 
-Возвращает ctg x (котангенс). 
  
 ==== tan ==== ==== tan ====
Line 181: Line 202:
  
 Возвращает tg x (тангенс). Возвращает tg x (тангенс).
 +
 +==== cot ====
 +''fixed cot(angle x)''
 +
 +Возвращает ctg x (котангенс).
  
 ==== sec ==== ==== sec ====
Line 196: Line 222:
  
 Возвращает arcsin x (арксинус). Возвращает arcsin x (арксинус).
 +
 +==== acos ====
 +''angle acos(fixed x)''
 +
 +Возвращает arccos x (арккосинус).
  
 ==== atan ==== ==== atan ====
Line 206: Line 237:
  
 Возвращает arcctg x (арккотангнес). Возвращает arcctg x (арккотангнес).
- 
-==== acos ==== 
-''angle acos(fixed x)'' 
- 
-Возвращает arccos x (арккосинус). 
  
 ==== asec ==== ==== asec ====
Line 221: Line 247:
  
 Возвращает arccosec x (арккосеканс). Возвращает arccosec x (арккосеканс).
 +
 +===== Векторы =====
 +
 +==== dot2 ====
 +''fixed dot2(fixed x1, fixed y1, fixed x2, fixed y2)''
 +
 +Возвращает скалярное произведение двух векторов.
 +
 +==== dot3 ====
 +''fixed dot3(fixed x1, fixed y1, fixed z1, fixed x2, fixed y2, fixed z2)''
 +
 +Возвращает скалярное произведение двух трехмерных векторов.
 +
 +==== length2d ====
 +''fixed length2d(fixed x, fixed y)''
 +
 +Возвращает длину заданного двухмерного вектора. Является Zandronum-реализацией функции 
 +[[zdoom>VectorLength]].
 +==== length2d2 ====
 +''fixed length2d2(int x, int y)''
 +
 +Возвращает **квадрат** длины данного двухмерного вектора.
 +
 +==== length3d ====
 +''fixed length3d(fixed x, fixed y, fixed z)''
 +
 +Возвращает длину заданного трехмерного вектора.
 +
 +==== length3d2 ====
 +''fixed length3d2(int x, int y, int z)''
 +
 +Возвращает **квадрат** длинны заданного трехмерного вектора.
 +
 +==== normalize2d ====
 +''fixed, fixed normalize2d(fixed x, fixed y)''
 +
 +Нормализует заданный двухмерный вектор.
 +
 +[[..mulretval|Эта функция возвращает несколько значений.]]
 +
 +==== normalize3d ====
 +''fixed, fixed, fixed normalize3d(fixed x, fixed y, fixed z)''
 +
 +Нормализует заданный трехмерный вектор.
 +
 +[[..mulretval|Эта функция возвращает несколько значений.]]
 +
 +==== RotatePoint ====
 +''fixed, fixed RotatePoint(fixed x, fixed y, fixed originX, fixed originY, angle angle)''
 +
 +Вращает заданную точку (x; y) вокруг заданной точки вращения на указанный угол и возвращает результирующие координаты точки.
 +
 +[[..mulretval|Эта функция возвращает несколько значений.]]
 +
 +==== RotateVector ====
 +''fixed, fixed RotateVector(fixed x, fixed y, angle angle)''
 +
 +Поворачивает вектор на указанный угол и возвращает его новые координаты.
 +
 +[[..mulretval|Эта функция возвращает несколько значений.]]
 +
 +**Пример**
 +
 +<code>
 +RotateVector(x, y, angle);
 +int newX = r1;
 +int newY = r2;
 +</code>
 +
 +==== VectorToAngles ====
 +''angle, angle VectorToAngles(fixed x, fixed y, fixed z)''
 +
 +Конвертирует вектор в пару углов (рысканье и тангаж (поворот и наклон)), которые направлены туда же.
 +
 +[[..mulretval|Эта функция возвращает несколько значений.]]
 +
 +**Пример**
 +
 +<code>
 +// Заставляет игрока смотреть по вектору
 +VectorToAngles(1.0, 2.0, 3.0);
 +int angle = r1;
 +int pitch = r2;
 +SetActorAngle(angle);
 +SetActorPitch(pitch);
 +</code>
ru/functions/math.txt · Last modified: 2016/05/05 00:53 by djskaarj