ACSUtils Wiki

An ACS library for ZDoom-based ports

User Tools

Site Tools


math

Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
math [2019/07/05 22:38]
korshun [VectorToAngles]
math [2019/08/26 21:26] (current)
korshun [Length]
Line 162: Line 162:
 ''​int ipow(int x, int y)''​ ''​int ipow(int x, int y)''​
  
-Returns x^y. Uses a simple multiplication loop.+Returns x<sup>y</​sup>​. Uses a simple multiplication loop.
  
 ==== fpow ==== ==== fpow ====
 ''​fixed fpow(fixed x, fixed y)''​ ''​fixed fpow(fixed x, fixed y)''​
  
-returns x^y. Supports powers below ''​1.0''​. Uses a simple loop with ''​FixedMul''​ or ''​FixedDiv'',​ depending on whether the power is below ''​1.0''​.+returns x<sup>y</​sup>​. Supports powers below ''​1.0''​. Uses a simple loop with ''​FixedMul''​ or ''​FixedDiv'',​ depending on whether the power is below ''​1.0''​.
  
  
Line 192: Line 192:
 ===== Vector math ===== ===== Vector math =====
  
-==== VectorLength3D ==== +Vector math functions come in 2D and 3D versions. All vector math functions operate only on fixed-point vectors. No integer versions are available.
-''​fixed VectorLength3D(fixed x, fixed y, fixed z)''​+
  
-A 3D version of [[zdoom>​VectorLength]]. ​Returns ​the length of the 3D vector.+Vectors are passed as arguments named ''​x'',​ ''​y'',​ ''​z''​. 
 + 
 +If a function returns a vector, it uses [[multiple return values]], returning vector components in the same XYZ order, so ''​r1''​ is X, ''​r2''​ is Y and ''​r3''​ is Z. 
 + 
 +If a function accepts more than one vector, the first vector is passed as ''​x1'',​ ''​y1'',​ ''​z1'',​ and the second one as ''​x2'',​ ''​y2'',​ ''​z2''​. 
 + 
 + 
 +==== Length ==== 
 + 
 +  * 2D: [[zdoom>​VectorLength]] ​-- already built into ZDoom. 
 +  * 3D: ''​fixed VectorLength3D(fixed x, fixed y, fixed Z)''​ 
 + 
 +These functions return ​the length of the input vector. ​''​VectorLength3D''​ is implemented efficiently as ''​VectorLength(VectorLength(x,​ y), z)''​. 
 + 
 +==== Dot product ====
  
-==== dot ==== 
   * 2D: ''​fixed dot2(fixed x1, fixed y1, fixed x2, fixed y2)''​   * 2D: ''​fixed dot2(fixed x1, fixed y1, fixed x2, fixed y2)''​
   * 3D: ''​fixed dot3(fixed x1, fixed y1, fixed z1, fixed x2, fixed y2, fixed z2)''​   * 3D: ''​fixed dot3(fixed x1, fixed y1, fixed z1, fixed x2, fixed y2, fixed z2)''​
  
-Returns ​the [[wp>dot product]] ​of two vectorsShorthand ​for writing out ''​FixedMul(x1,​ x2) + FixedMul(y1,​ y2) + ...''​.+These functions return the sum of components of a vector obtained by componentwise multiplication of the two input vectors, also known as the [[wp>dot product]]. ​They are shorthands ​for writing out ''​FixedMul(x1,​ x2) + FixedMul(y1,​ y2) + ...''​. 
 + 
 +==== Normalization ====
  
-==== normalize ==== 
   * 2D: ''​fixed,​ fixed normalize2d(fixed x, fixed y)''​   * 2D: ''​fixed,​ fixed normalize2d(fixed x, fixed y)''​
   * 3D: ''​fixed,​ fixed, fixed normalize3d(fixed x, fixed y, fixed z)''​   * 3D: ''​fixed,​ fixed, fixed normalize3d(fixed x, fixed y, fixed z)''​
  
-[[wp>​Normalized vector|Normalizes]] the vector and returns ​the result using [[multiple return values]].+These functions return the input vector scaled to have length ''​1.0'',​ also known as [[wp>​Normalized vector|normalizing]] the input vectorand return ​the result using [[multiple return values]].
  
-=== Example usage ===+=== Examples ​===
 <​code>​ <​code>​
 normalize3d(x,​ y, z); normalize3d(x,​ y, z);
math.1562355525.txt.gz · Last modified: 2019/07/05 22:38 by korshun