pencil.js
Version:
Nice modular interactive 2D drawing library.
151 lines (107 loc) • 4.33 kB
Markdown
# Documentation
## Methods
### constrain
Constrain a number between two limits.
```js
constrain(99, 0, 10); // 10
```
| Name | Type | Default | Comment |
|-------|------------|----------|-----------------------------|
| value | ``Number`` | Required | Any number |
| min | ``Number`` | Required | Minimal limit for the value |
| max | ``Number`` | Required | Maximal limit for the value |
### equals
Determine if two number can considered equals accounting for JS precision.
```js
equals(0.2 + 0.1, 0.3); // true
```
| Name | Type | Default | Comment |
|---------|------------|----------|------------|
| number1 | ``Number`` | Required | Any number |
| number2 | ``Number`` | Required | Any number |
### random
Return a random number between limits.
```js
random(0.1, 0.2); // between 0.1 and 0.2 => 0.1724935816940606
random(0.1); // between 0 and 0.1 => 0.0038693216847277335
```
| Name | Type | Default | Comment |
|------|------------|---------|-----------------------------------------------|
| min | ``Number`` | 1 | Lower limit, or upper limit if max is omitted |
| max | ``Number`` | | Upper limit, can be omitted |
### truncate
Truncate a floating number to its integer part.
```js
truncate(-99.9); // -99
```
| Name | Type | Default | Comment |
|-------|------------|----------|------------|
| value | ``Number`` | Required | Any number |
### modulo
Return modulo with the same sign as the divisor (Floored division)
```js
modulo(7, 3); // 1
modulo(-7, 3); // 2
```
| Name | Type | Default | Comment |
|---------|------------|----------|----------|
| value | ``Number`` | Required | Dividend |
| divisor | ``Number`` | Required | Divisor |
### distribute
Returns an array of evenly distributed value across a range
```js
distribute(10); // Array of 10 "random" distributed across 0 and 1
distribute(100, 1, 10); // Array of 100 "random" distributed across 1 and 10
```
| Name | Type | Default | Comment |
|---------|------------|----------|-----------------------------|
| nbValue | ``Number`` | Required | Number of value to generate |
| min | ``Number`` | ``0`` | Minimum value of the set |
| max | ``Number`` | ``1`` | Maximum value of the set |
### sum
Add up all values passed as argument
```js
sum(1, 2, 3); // 6
```
| Name | Type | Default | Comment |
|--------|---------------|----------|---------------|
| values | ``...Number`` | Required | Set of number |
### average
Return the average of all values (Arithmetic mean)
```js
sum(1, 2, 3); // 2
```
| Name | Type | Default | Comment |
|--------|---------------|----------|---------------|
| values | ``...Number`` | Required | Set of number |
### map
Return the equivalent of a value from a scale to another
```js
map(8, 0, 10); // 0.8
map(7, 0, 10, 0, 100); // 70
```
| Name | Type | Default | Comment |
|---------|------------|----------|---------------------------|
| values | ``Number`` | Required | Any number |
| fromMin | ``Number`` | Required | Start of the origin scale |
| fromMax | ``Number`` | Required | End of the origin scale |
| toMin | ``Number`` | ``0`` | Start of the target scale |
| toMax | ``Number`` | ``1`` | End of the target scale |
### lerp
Linear extrapolation computation, useful when doing animation
```js
lerp(5, 7, 0.2); // 5.4
lerp(10, 20, 0.5); // 15
```
| Name | Type | Default | Comment |
|-------|------------|----------|---------------------------------------------------------------------|
| from | ``Number`` | Required | Starting value |
| to | ``Number`` | Required | Target value |
| ratio | ``Number`` | Required | Extrapolation ratio, 0 is the starting value and 1 the target value |
## Properties
### radianCircle
Value of a full rotation on a radian circle (2 * PI).
### degreeCircle
Value of a full rotation on a degree circle (360).
### phi
Golden ratio number (about 1.62)