math: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
|||
Line 8: | Line 8: | ||
|usage= | |usage= | ||
< | <syntaxhighlight lang="mtmacro" line> | ||
Numbers: | Numbers: | ||
[r:val = math.pi()] | [r:val = math.pi()] | ||
Line 57: | Line 57: | ||
[r:val = math.mod(dividend, divisor)] | [r:val = math.mod(dividend, divisor)] | ||
</ | </syntaxhighlight> | ||
|examples=<nowiki></nowiki> | |examples=<nowiki></nowiki> | ||
====abs==== | ====abs==== | ||
< | <syntaxhighlight lang="mtmacro" line> | ||
[r:val = math.abs(-3)] | [r:val = math.abs(-3)] | ||
</ | </syntaxhighlight> | ||
Returns: 3.0 | Returns: 3.0 | ||
====atan2_r==== | ====atan2_r==== | ||
< | <syntaxhighlight lang="mtmacro" line> | ||
<!-- calculate angle from center of source to center of target --> | <!-- calculate angle from center of source to center of target --> | ||
[H: x1 = getTokenX(1,sourceId) + round(getTokenWidth(sourceId)/2)] | [H: x1 = getTokenX(1,sourceId) + round(getTokenWidth(sourceId)/2)] | ||
Line 76: | Line 76: | ||
<!-- note: reversed y1 and y2 in formulas to represent inverted MapTool coordinate system on y-axis --> | <!-- note: reversed y1 and y2 in formulas to represent inverted MapTool coordinate system on y-axis --> | ||
[H: facing = round(math.atan2_r(y1-y2,x2-x1) / math.pi() * 180)] | [H: facing = round(math.atan2_r(y1-y2,x2-x1) / math.pi() * 180)] | ||
</ | </syntaxhighlight> | ||
Output range from -179 to 180 degrees. | Output range from -179 to 180 degrees. | ||
Line 82: | Line 82: | ||
Returns the result of the modulo operation between the two numbers, which represents the remainder after a division operation. | Returns the result of the modulo operation between the two numbers, which represents the remainder after a division operation. | ||
< | <syntaxhighlight lang="mtmacro" line> | ||
[r: math.mod(14,6)] | [r: math.mod(14,6)] | ||
</ | </syntaxhighlight> | ||
Returns 2 | Returns 2 | ||
< | <syntaxhighlight lang="mtmacro" line> | ||
[r: math.mod(10,5)] | [r: math.mod(10,5)] | ||
</ | </syntaxhighlight> | ||
Returns 0 | Returns 0 | ||
< | <syntaxhighlight lang="mtmacro" line> | ||
[r: math.mod(-13,4)] | [r: math.mod(-13,4)] | ||
</ | </syntaxhighlight> | ||
Returns -1 | Returns -1 | ||
====pow==== | ====pow==== | ||
< | <syntaxhighlight lang="mtmacro" line> | ||
[r:val = math.pow(2,3)] | [r:val = math.pow(2,3)] | ||
</ | </syntaxhighlight> | ||
Returns: 8.0 | Returns: 8.0 | ||
|also= | |also= |
Revision as of 17:52, 15 March 2023
math() Function
• Introduced in version 1.4.0.5
This is NOT a single MapTool function but a collection of math functions in MapTool.
Important Note: Some of these functions have similar versions that don't have the math.
prefix. These functions may differ slightly from those in implementation and output. For instance, most of these functions return a floating-point number (e.g.: 3.0
), so you may find it helpful to surround them with round(), floor(), or ceiling().
Usage
Numbers:
[r:val = math.pi()]
[r:val = math.e()]
Trigonomotry:
[r:val = math.acos(degrees)]
[r:val = math.acos_r(radians)]
[r:val = math.asin(degrees)]
[r:val = math.asin_r(radians)]
[r:val = math.atan(degrees)]
[r:val = math.atan_r(num)] <!-- radians -->
[r:val = math.atan2(y,x)] <!-- degrees -->
[r:val = math.atan2_r(y,x)] <!-- radians -->
[r:val = math.cos(degrees)]
[r:val = math.cos_r(num)]
[r:val = math.sin(degrees)]
[r:val = math.sin_r(num)]
[r:val = math.tan(degrees)]
[r:val = math.tan_r(num)]
[r:val = math.toDegrees(num)]
[r:val = math.toRadians(degrees)]
Power and root:
[r:val = math.sqrt(num)]
[r:val = math.squareroot(num)]
[r:val = math.cbrt(num)]
[r:val = math.cuberoot(num)]
[r:val = math.pow(num1,num2)]
Logarithmic
[r:val = math.log(num)] (this is the log to base e)
[r:val = math.log10(num)]
Pythagorean:
[r:val = math.hypot(num1, num2)]
[r:val = math.hypotenuse(num1, num2)]
Simple operations
[r:val = math.abs(num)]
[r:val = math.ceil(num)]
[r:val = math.floor(num)]
[r:val = math.isEven(num)]
[r:val = math.isInt(num)]
[r:val = math.isOdd(num)]
[r:val = math.max(num1, num2, num2, etc.)]
[r:val = math.min(num1, num2, num2, etc.)]
[r:val = math.mod(dividend, divisor)]
Examples
abs
[r:val = math.abs(-3)]
Returns: 3.0
atan2_r
<!-- calculate angle from center of source to center of target -->
[H: x1 = getTokenX(1,sourceId) + round(getTokenWidth(sourceId)/2)]
[H: y1 = getTokenY(1,sourceId) + round(getTokenHeight(sourceId)/2)]
[H: x2 = getTokenX(1,targetId) + round(getTokenWidth(targetId)/2)]
[H: y2 = getTokenY(1,targetId) + round(getTokenHeight(targetId)/2)]
<!-- note: reversed y1 and y2 in formulas to represent inverted MapTool coordinate system on y-axis -->
[H: facing = round(math.atan2_r(y1-y2,x2-x1) / math.pi() * 180)]
Output range from -179 to 180 degrees.
mod
Returns the result of the modulo operation between the two numbers, which represents the remainder after a division operation.
[r: math.mod(14,6)]
Returns 2
[r: math.mod(10,5)]
Returns 0
[r: math.mod(-13,4)]
Returns -1
pow
[r:val = math.pow(2,3)]