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 revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
math [2019/07/04 20:43] – [AnglesToVector] korshunmath [2019/08/26 21:16] korshun
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 ==== +==== Length ====
-''fixed VectorLength3D(fixed x, fixed y, fixed z)''+
  
-A 3D version of [[zdoom>VectorLength]]. Returns the length of the 3D vector.+  * 2D: [[zdoom>VectorLength]] 
 +  * 3D: ''fixed VectorLength3D(fixed x, fixed y, fixed Z)'' 
 + 
 +''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 vectors. Shorthand for writing out ''FixedMul(x1, x2) + FixedMul(y1, y2) + ...''.+These functions return the [[wp>dot product]] of two vectors. 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 [[wp>Normalized vector|Normalize]] the input vector and return the result using [[multiple return values]].
  
 === Example usage === === Example usage ===
Line 292: Line 296:
 Converts the vector's direction to a pair of angles (angle, pitch) and returns them using [[multiple return values]]. Converts the vector's direction to a pair of angles (angle, pitch) and returns them using [[multiple return values]].
  
-<note important>Remember that ZDoom uses inverted pitch angles on actors. ACSUtils functions don'invert pitches.</note>+<note important>Remember that ZDoom uses negated pitch angles on actors. ACSUtils functions don'use negated pitches. </note>
  
 === Example usage === === Example usage ===
Line 305: Line 309:
     int pitch = r2;     int pitch = r2;
     SetActorAngle(tid, angle);     SetActorAngle(tid, angle);
-    SetActorPitch(tid, -pitch); // SetActorPitch expects inverted pitch.+    SetActorPitch(tid, -pitch); // SetActorPitch expects negated pitch.
 } }
 </code> </code>
Line 314: Line 318:
 Converts a pair of angles (angle, pitch) to a 3D vector of length ''1.0'', which points in the same direction, and returns it using [[multiple return values]]. Converts a pair of angles (angle, pitch) to a 3D vector of length ''1.0'', which points in the same direction, and returns it using [[multiple return values]].
  
-<note important>Remember that ZDoom uses inverted pitches on actors. ACSUtils functions don'invert pitches.</note>+<note important>Remember that ZDoom uses negated pitch angles on actors. ACSUtils functions don'use negated pitches.</note>
  
-=== Example ===+=== Example usage ===
  
 <code> <code>
-AnglesToVector(GetActorAngle(0), -GetActorPitch(0));+AnglesToVector(GetActorAngle(0), -GetActorPitch(0)); // Un-negate actor pitch
 int dirX = r1; int dirX = r1;
 int dirY = r2; int dirY = r2;
math.txt · Last modified: 2019/08/26 21:26 by korshun