# math: Difference between revisions

Jump to navigation
Jump to search

Returns: 8.0

mNo edit summary |
(something behind the scenes already catches the implicit potential division by 0, so there seems to be no need to check it explicitely) |
||

(8 intermediate revisions by 3 users not shown) | |||

Line 4: | Line 4: | ||

|description= | |description= | ||

This is NOT a single MapTool function but a collection of math functions in MapTool. | This is NOT a single MapTool function but a collection of math functions in MapTool. | ||

<p /> | |||

'''Important Note''': | '''Important Note''': Some of these functions have similar versions that don't have the <code>math.</code> 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.: <code>3.0</code>), so you may find it helpful to surround them with {{func|round}}, {{func|floor}}, or {{func|ceiling}}. | ||

|usage= | |usage= | ||

Line 19: | Line 19: | ||

[r:val = math.asin_r(radians)] | [r:val = math.asin_r(radians)] | ||

[r:val = math.atan(degrees)] | [r:val = math.atan(degrees)] | ||

[r:val = math.atan_r( | [r:val = math.atan_r(num)] <!-- radians --> | ||

[r:val = math.atan2( | [r:val = math.atan2(y,x)] <!-- degrees --> | ||

[r:val = math.atan2_r( | [r:val = math.atan2_r(y,x)] <!-- radians --> | ||

[r:val = math.cos(degrees)] | [r:val = math.cos(degrees)] | ||

[r:val = math.cos_r(num)] | [r:val = math.cos_r(num)] | ||

Line 65: | Line 65: | ||

</source> | </source> | ||

Returns: 3.0 | Returns: 3.0 | ||

====atan2_r==== | |||

<source lang="mtmacro" line> | |||

<!-- 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)] | |||

</source> | |||

Output range from -179 to 180 degrees. | |||

====mod==== | ====mod==== | ||

Line 89: | Line 102: | ||

</source> | </source> | ||

Returns: 8.0 | Returns: 8.0 | ||

|also= | |||

Some <code>math</code> functions are further documented on their own pages: | |||

<ul><li>[[math.e]]</li><li>[[math.log]]</li></ul> | |||

}} | }} | ||

[[Category:Mathematical Function]] | [[Category:Mathematical Function]] |

## Revision as of 20:05, 13 June 2022

## 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)]`