# math

## 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

```
<!-- getFacingToTarget(sourceId,targetId,degreeRound): facing
sourceId - tokenId of source
targetId - tokenId of target
degreeRound - (opt) round to the nearest degree increment, defaults to 1
Return the facing from a source token to a target token, center to center
-->
[H: sourceId = arg(0)]
[H: targetId = arg(1)]
[H, if(argCount() >= 3): degreeRound = arg(2); degreeRound = 1]
<!-- 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)]
[H, if(x1 == x2): direction = 90 * min(1,max(-1,y1-y2)); direction = math.atan2_r((y1-y2),(x2-x1)) / Math.pi() * 180]
[H: facing = degreeRound * round(direction/degreeRound)]
[H: macro.return = facing]
```

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