Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision |
math [2019/04/20 19:58] – [Significant square roots and logarithms] korshun | math [2019/08/26 21:12] – korshun |
---|
''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''. |
| |
| |
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't invert pitches.</note> | <note important>Remember that ZDoom uses negated pitch angles on actors. ACSUtils functions don't use negated pitches. </note> |
| |
=== Example usage === | === Example usage === |
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> |
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't invert pitches.</note> | <note important>Remember that ZDoom uses negated pitch angles on actors. ACSUtils functions don't use negated pitches.</note> |
| |
| === Example usage === |
| |
| <code> |
| AnglesToVector(GetActorAngle(0), -GetActorPitch(0)); // Un-negate actor pitch |
| int dirX = r1; |
| int dirY = r2; |
| int dirZ = r3; |
| </code> |
| |
===== Logarithms ===== | ===== Logarithms ===== |
| |
<note important>Only bases higher than ''1.0'' are supported.</note> | <note important>Only bases higher than ''1.0'' are supported.</note> |
| |
<note important>Using ''ilogb'' with bases very close to ''1.0'' may produce a result that doesn't fit into a fixed.</note> | <note important>Using these functions with bases very close to ''1.0'' may produce a result that doesn't fit into a fixed.</note> |
| |
Note that even the integer version has a fixed-point base. | Note that even the integer version has a fixed-point base. |
| |