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
ru:functions:math [2016/04/26 21:18] djskaarjru:functions:math [2016/05/05 00:53] (current) djskaarj
Line 39: Line 39:
  
 Сравнивает два числа и возвращает результат: Сравнивает два числа и возвращает результат:
-  * ''1'' -- a > b +  * ''1'', если a > b 
-  * ''-1'' -- a < b +  * ''-1'', если a < b 
-  * ''0'' -- a = b+  * ''0'', если a = b
  
 ==== dist ==== ==== dist ====
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 84: Line 98:
  
 Возвращает знак числа x. Возвращает знак числа x.
-  * ''1'' -- x > 0 (положительное) +  * ''1'', если x > 0 (положительное) 
-  * ''-1'' -- x < 0 (отрицательное) +  * ''-1'', если x < 0 (отрицательное) 
-  * ''0'' -- x = 0+  * ''0'', если x = 0
  
 **Пример** **Пример**
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 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.1461694687.txt.gz · Last modified: 2016/04/26 21:18 by djskaarj