@lijuhong1981/jsmath 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.js +53 -0
- package/package.json +16 -0
- package/src/Constant.js +27 -0
- package/src/clampToLatitudeRange.js +11 -0
- package/src/clampToLongitudeRange.js +10 -0
- package/src/clampToRange.js +5 -0
- package/src/convertToDegreesRound.js +7 -0
- package/src/convertToLatitudeRange.js +24 -0
- package/src/convertToLongitudeRange.js +10 -0
- package/src/convertToRadiansRound.js +8 -0
- package/src/convertToRange.js +21 -0
- package/src/percentInRange.js +10 -0
- package/src/percentToRange.js +9 -0
- package/src/randomInteger.js +7 -0
- package/src/randomNumber.js +5 -0
package/index.js
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import {
|
|
2
|
+
PI,
|
|
3
|
+
ONE_OVER_PI,
|
|
4
|
+
PI_OVER_TWO,
|
|
5
|
+
PI_OVER_THREE,
|
|
6
|
+
PI_OVER_FOUR,
|
|
7
|
+
PI_OVER_SIX,
|
|
8
|
+
THREE_PI_OVER_TWO,
|
|
9
|
+
TWO_PI,
|
|
10
|
+
ONE_OVER_TWO_PI,
|
|
11
|
+
RADIANS_PER_DEGREE,
|
|
12
|
+
DEGREES_PER_RADIAN,
|
|
13
|
+
RADIANS_PER_ARCSECOND
|
|
14
|
+
} from "./src/Constant.js";
|
|
15
|
+
import clampToRange from "./src/clampToRange.js";
|
|
16
|
+
import clampToLongitudeRange from "./src/clampToLongitudeRange.js";
|
|
17
|
+
import clampToLatitudeRange from "./src/clampToLatitudeRange.js";
|
|
18
|
+
import convertToRange from "./src/convertToRange.js";
|
|
19
|
+
import convertToLongitudeRange from "./src/convertToLongitudeRange.js";
|
|
20
|
+
import convertToLatitudeRange from "./src/convertToLatitudeRange.js";
|
|
21
|
+
import convertToDegreesRound from "./src/convertToDegreesRound.js";
|
|
22
|
+
import convertToRadiansRound from "./src/convertToRadiansRound.js";
|
|
23
|
+
import percentInRange from "./src/percentInRange.js";
|
|
24
|
+
import percentToRange from "./src/percentToRange.js";
|
|
25
|
+
import randomInteger from "./src/randomInteger.js";
|
|
26
|
+
import randomNumber from "./src/randomNumber.js";
|
|
27
|
+
|
|
28
|
+
export {
|
|
29
|
+
PI,
|
|
30
|
+
ONE_OVER_PI,
|
|
31
|
+
PI_OVER_TWO,
|
|
32
|
+
PI_OVER_THREE,
|
|
33
|
+
PI_OVER_FOUR,
|
|
34
|
+
PI_OVER_SIX,
|
|
35
|
+
THREE_PI_OVER_TWO,
|
|
36
|
+
TWO_PI,
|
|
37
|
+
ONE_OVER_TWO_PI,
|
|
38
|
+
RADIANS_PER_DEGREE,
|
|
39
|
+
DEGREES_PER_RADIAN,
|
|
40
|
+
RADIANS_PER_ARCSECOND,
|
|
41
|
+
clampToRange,
|
|
42
|
+
clampToLongitudeRange,
|
|
43
|
+
clampToLatitudeRange,
|
|
44
|
+
convertToRange,
|
|
45
|
+
convertToLongitudeRange,
|
|
46
|
+
convertToLatitudeRange,
|
|
47
|
+
convertToDegreesRound,
|
|
48
|
+
convertToRadiansRound,
|
|
49
|
+
percentInRange,
|
|
50
|
+
percentToRange,
|
|
51
|
+
randomInteger,
|
|
52
|
+
randomNumber,
|
|
53
|
+
};
|
package/package.json
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@lijuhong1981/jsmath",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "",
|
|
5
|
+
"main": "index.js",
|
|
6
|
+
"module": "index.js",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"scripts": {
|
|
9
|
+
"test": "echo \"Error: no test specified\" && exit 1"
|
|
10
|
+
},
|
|
11
|
+
"author": "lijuhong1981",
|
|
12
|
+
"license": "ISC",
|
|
13
|
+
"dependencies": {
|
|
14
|
+
"@lijuhong1981/jscheck": "^1.0.0"
|
|
15
|
+
}
|
|
16
|
+
}
|
package/src/Constant.js
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
const PI = Math.PI;
|
|
2
|
+
const ONE_OVER_PI = 1.0 / PI;
|
|
3
|
+
const PI_OVER_TWO = PI / 2.0;
|
|
4
|
+
const PI_OVER_THREE = PI / 3.0;
|
|
5
|
+
const PI_OVER_FOUR = PI / 4.0;
|
|
6
|
+
const PI_OVER_SIX = PI / 6.0;
|
|
7
|
+
const THREE_PI_OVER_TWO = (3.0 * PI) / 2.0;
|
|
8
|
+
const TWO_PI = 2.0 * PI;
|
|
9
|
+
const ONE_OVER_TWO_PI = 1.0 / (2.0 * PI);
|
|
10
|
+
const RADIANS_PER_DEGREE = PI / 180.0;
|
|
11
|
+
const DEGREES_PER_RADIAN = 180.0 / PI;
|
|
12
|
+
const RADIANS_PER_ARCSECOND = RADIANS_PER_DEGREE / 3600.0;
|
|
13
|
+
|
|
14
|
+
export {
|
|
15
|
+
PI,
|
|
16
|
+
ONE_OVER_PI,
|
|
17
|
+
PI_OVER_TWO,
|
|
18
|
+
PI_OVER_THREE,
|
|
19
|
+
PI_OVER_FOUR,
|
|
20
|
+
PI_OVER_SIX,
|
|
21
|
+
THREE_PI_OVER_TWO,
|
|
22
|
+
TWO_PI,
|
|
23
|
+
ONE_OVER_TWO_PI,
|
|
24
|
+
RADIANS_PER_DEGREE,
|
|
25
|
+
DEGREES_PER_RADIAN,
|
|
26
|
+
RADIANS_PER_ARCSECOND
|
|
27
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import clampToRange from "./clampToRange.js";
|
|
2
|
+
import { PI_OVER_TWO } from "./Constant.js";
|
|
3
|
+
|
|
4
|
+
function clampToLatitudeRange(latitude, degrees = true) {
|
|
5
|
+
if (degrees)
|
|
6
|
+
return clampToRange(latitude, -90, 90);
|
|
7
|
+
else
|
|
8
|
+
return clampToRange(latitude, -PI_OVER_TWO, PI_OVER_TWO);
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
export default clampToLatitudeRange;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import clampToRange from "./clampToRange.js";
|
|
2
|
+
|
|
3
|
+
function clampToLongitudeRange(longitude, degrees = true) {
|
|
4
|
+
if (degrees)
|
|
5
|
+
return clampToRange(longitude, -180, 180);
|
|
6
|
+
else
|
|
7
|
+
return clampToRange(longitude, -Math.PI, Math.PI);
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
export default clampToLongitudeRange;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { PI_OVER_TWO } from "./Constant.js";
|
|
2
|
+
|
|
3
|
+
function convertToLatitudeRange(latitude, degrees = true) {
|
|
4
|
+
if (degrees) {
|
|
5
|
+
while (latitude > 90 || latitude < -90) {
|
|
6
|
+
if (latitude > 90) {
|
|
7
|
+
latitude = 180 - latitude;
|
|
8
|
+
} else if (latitude < -90) {
|
|
9
|
+
latitude = -180 - latitude;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
} else {
|
|
13
|
+
while (latitude > PI_OVER_TWO || latitude < -PI_OVER_TWO) {
|
|
14
|
+
if (latitude > PI_OVER_TWO) {
|
|
15
|
+
latitude = Math.PI - latitude;
|
|
16
|
+
} else if (latitude < -PI_OVER_TWO) {
|
|
17
|
+
latitude = -Math.PI - latitude;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return latitude;
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
export default convertToLatitudeRange;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import convertToRange from "./convertToRange.js";
|
|
2
|
+
|
|
3
|
+
function convertToLongitudeRange(longitude, degrees = true) {
|
|
4
|
+
if (degrees)
|
|
5
|
+
return convertToRange(longitude, -180, 180);
|
|
6
|
+
else
|
|
7
|
+
return convertToRange(longitude, -Math.PI, Math.PI);
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
export default convertToLongitudeRange;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import Check from "@lijuhong1981/jscheck";
|
|
2
|
+
|
|
3
|
+
function convertToRange(value, min, max) {
|
|
4
|
+
Check.typeOf.number("value", value);
|
|
5
|
+
Check.typeOf.number("min", min);
|
|
6
|
+
Check.typeOf.number("max", max);
|
|
7
|
+
|
|
8
|
+
const length = max - min;
|
|
9
|
+
if (value < min) {
|
|
10
|
+
value += length;
|
|
11
|
+
while (value < min)
|
|
12
|
+
value += length;
|
|
13
|
+
} else if (value > max) {
|
|
14
|
+
value -= length;
|
|
15
|
+
while (value > max)
|
|
16
|
+
value -= length;
|
|
17
|
+
}
|
|
18
|
+
return value;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
export default convertToRange;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import clampToRange from "./clampToRange.js";
|
|
2
|
+
|
|
3
|
+
function percentInRange(value, rangeMinimum, rangeMaximum, clamp = false) {
|
|
4
|
+
let scalar = (value - rangeMinimum) / (rangeMaximum - rangeMinimum);
|
|
5
|
+
if (clamp)
|
|
6
|
+
scalar = clampToRange(scalar, 0, 1);
|
|
7
|
+
return scalar;
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
export default percentInRange;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import clampToRange from "./clampToRange.js";
|
|
2
|
+
|
|
3
|
+
function percentToRange(percent, rangeMinimum, rangeMaximum, clamp = false) {
|
|
4
|
+
if (clamp)
|
|
5
|
+
percent = clampToRange(percent, 0, 1);
|
|
6
|
+
return rangeMinimum + (rangeMaximum - rangeMinimum) * percent;
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
export default percentToRange;
|