@lijuhong1981/jsmath 1.0.0 → 1.0.2

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/.gitattributes ADDED
@@ -0,0 +1,2 @@
1
+ # Auto detect text files and perform LF normalization
2
+ * text=auto
package/index.js CHANGED
@@ -12,14 +12,11 @@ import {
12
12
  DEGREES_PER_RADIAN,
13
13
  RADIANS_PER_ARCSECOND
14
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";
15
+ import clamp from "./src/clamp.js";
18
16
  import convertToRange from "./src/convertToRange.js";
19
- import convertToLongitudeRange from "./src/convertToLongitudeRange.js";
20
- import convertToLatitudeRange from "./src/convertToLatitudeRange.js";
21
17
  import convertToDegreesRound from "./src/convertToDegreesRound.js";
22
18
  import convertToRadiansRound from "./src/convertToRadiansRound.js";
19
+ import isBetween from "./src/isBetween.js";
23
20
  import percentInRange from "./src/percentInRange.js";
24
21
  import percentToRange from "./src/percentToRange.js";
25
22
  import randomInteger from "./src/randomInteger.js";
@@ -38,14 +35,11 @@ export {
38
35
  RADIANS_PER_DEGREE,
39
36
  DEGREES_PER_RADIAN,
40
37
  RADIANS_PER_ARCSECOND,
41
- clampToRange,
42
- clampToLongitudeRange,
43
- clampToLatitudeRange,
38
+ clamp,
44
39
  convertToRange,
45
- convertToLongitudeRange,
46
- convertToLatitudeRange,
47
40
  convertToDegreesRound,
48
41
  convertToRadiansRound,
42
+ isBetween,
49
43
  percentInRange,
50
44
  percentToRange,
51
45
  randomInteger,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lijuhong1981/jsmath",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "module": "index.js",
package/src/clamp.js ADDED
@@ -0,0 +1,17 @@
1
+ import Check from "@lijuhong1981/jscheck";
2
+
3
+ /**
4
+ * 将一个数值约束在两个数值之间
5
+ * @param {Number} value 需要约束的数值
6
+ * @param {Number} rangeMinimum 较小数
7
+ * @param {Number} rangeMaximum 较大数
8
+ * @returns {Number} 约束后的数值
9
+ */
10
+ function clamp(value, rangeMinimum, rangeMaximum) {
11
+ Check.typeOf.number('value', value);
12
+ Check.typeOf.number('rangeMinimum', rangeMinimum);
13
+ Check.typeOf.number('rangeMaximum', rangeMaximum);
14
+ return value < rangeMinimum ? rangeMinimum : value > rangeMaximum ? rangeMaximum : value;
15
+ };
16
+
17
+ export default clamp;
@@ -1,7 +1,13 @@
1
1
  import convertToRange from "./convertToRange.js";
2
2
 
3
+ /**
4
+ * 转换一个角度至一个圆周范围内
5
+ * @param {Number} degrees 需要换行的角度
6
+ * @param {Number} minValue 起始角度,默认0
7
+ * @returns {Number} 转换后的角度
8
+ */
3
9
  function convertToDegreesRound(degrees, minValue = 0) {
4
10
  return convertToRange(degrees, minValue, minValue + 360);
5
- }
11
+ };
6
12
 
7
13
  export default convertToDegreesRound;
@@ -1,8 +1,14 @@
1
1
  import convertToRange from "./convertToRange.js";
2
2
  import { TWO_PI } from "./Constant.js";
3
3
 
4
+ /**
5
+ * 转换一个弧度至一个圆周范围内
6
+ * @param {Number} radians 需要转换的弧度
7
+ * @param {Number} minValue 圆周起始弧度,默认0
8
+ * @returns {Number} 转换后的弧度
9
+ */
4
10
  function convertToRadiansRound(radians, minValue = 0) {
5
11
  return convertToRange(radians, minValue, minValue + TWO_PI);
6
- }
12
+ };
7
13
 
8
14
  export default convertToRadiansRound;
@@ -1,18 +1,26 @@
1
1
  import Check from "@lijuhong1981/jscheck";
2
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);
3
+ /**
4
+ * 将一个数值转换至两个数值范围内
5
+ * 如不在范围内则累加或累减范围长度,直至落在范围内
6
+ * @param {Number} 需要转换的数值
7
+ * @param {Number} 较小数
8
+ * @param {Number} 较大数
9
+ * @returns {Number} 转换后的数值
10
+ */
11
+ function convertToRange(value, rangeMinimum, rangeMaximum) {
12
+ Check.typeOf.number('value', value);
13
+ Check.typeOf.number('rangeMinimum', rangeMinimum);
14
+ Check.typeOf.number('rangeMaximum', rangeMaximum);
7
15
 
8
- const length = max - min;
9
- if (value < min) {
16
+ const length = rangeMaximum - rangeMinimum;
17
+ if (value < rangeMinimum) {
10
18
  value += length;
11
- while (value < min)
19
+ while (value < rangeMinimum)
12
20
  value += length;
13
- } else if (value > max) {
21
+ } else if (value > rangeMaximum) {
14
22
  value -= length;
15
- while (value > max)
23
+ while (value > rangeMaximum)
16
24
  value -= length;
17
25
  }
18
26
  return value;
@@ -0,0 +1,23 @@
1
+ import Check from "@lijuhong1981/jscheck";
2
+
3
+ /**
4
+ * 判断一个数值是否在两个数值之间
5
+ * @param {Number} value 需要判断的数值
6
+ * @param {Number} rangeMinimum 较小数
7
+ * @param {Number} rangeMaximum 较大数
8
+ * @param {Boolean} equalsMinimum 可否等于较小数,默认true
9
+ * @param {Boolean} equalsMaximum 可否等于较大数,默认true
10
+ * @returns {Boolean} 判断结果
11
+ */
12
+ function isBetween(value, rangeMinimum, rangeMaximum, equalsMinimum = true, equalsMaximum = true) {
13
+ Check.typeOf.number('value', value);
14
+ Check.typeOf.number('rangeMinimum', rangeMinimum);
15
+ Check.typeOf.number('rangeMaximum', rangeMaximum);
16
+ if (equalsMinimum ? value < rangeMinimum : value <= rangeMinimum)
17
+ return false;
18
+ if (equalsMaximum ? value > rangeMaximum : value >= rangeMaximum)
19
+ return false;
20
+ return true;
21
+ };
22
+
23
+ export default isBetween;
@@ -1,10 +1,22 @@
1
- import clampToRange from "./clampToRange.js";
1
+ import Check from "@lijuhong1981/jscheck";
2
+ import clamp from "./clamp.js";
2
3
 
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;
4
+ /**
5
+ * 计算一个数值在两个数值范围内的百分比
6
+ * @param {Number} value 需要计算的数值
7
+ * @param {Number} rangeMinimum 较小数
8
+ * @param {Number} rangeMaximum 较大数
9
+ * @param {Boolean} needClamp 是否需要约束至0到1之间,默认false
10
+ * @returns {Number} 百分比
11
+ */
12
+ function percentInRange(value, rangeMinimum, rangeMaximum, needClamp = false) {
13
+ Check.typeOf.number('value', value);
14
+ Check.typeOf.number('rangeMinimum', rangeMinimum);
15
+ Check.typeOf.number('rangeMaximum', rangeMaximum);
16
+ let percent = (value - rangeMinimum) / (rangeMaximum - rangeMinimum);
17
+ if (needClamp)
18
+ percent = clamp(percent, 0, 1);
19
+ return percent;
8
20
  };
9
21
 
10
22
  export default percentInRange;
@@ -1,8 +1,20 @@
1
- import clampToRange from "./clampToRange.js";
1
+ import Check from "@lijuhong1981/jscheck";
2
+ import clamp from "./clamp.js";
2
3
 
3
- function percentToRange(percent, rangeMinimum, rangeMaximum, clamp = false) {
4
- if (clamp)
5
- percent = clampToRange(percent, 0, 1);
4
+ /**
5
+ * 根据百分比计算在两个数值之间的数
6
+ * @param {Number} percent 百分比
7
+ * @param {Number} rangeMinimum 较小数
8
+ * @param {Number} rangeMaximum 较大数
9
+ * @param {Boolean} needClamp 是否需要约束至两个数值之间,默认false
10
+ * @returns {Number} 计算结果
11
+ */
12
+ function percentToRange(percent, rangeMinimum, rangeMaximum, needClamp = false) {
13
+ Check.typeOf.number('value', value);
14
+ Check.typeOf.number('rangeMinimum', rangeMinimum);
15
+ Check.typeOf.number('rangeMaximum', rangeMaximum);
16
+ if (needClamp)
17
+ percent = clamp(percent, 0, 1);
6
18
  return rangeMinimum + (rangeMaximum - rangeMinimum) * percent;
7
19
  };
8
20
 
@@ -1,7 +1,13 @@
1
1
  import randomNumber from "./randomNumber.js";
2
2
 
3
- function randomInteger(min = 0, max = Number.MAX_SAFE_INTEGER - 1) {
4
- return Math.floor(randomNumber(min, max + 1));
3
+ /**
4
+ * 产生一个随机整数,可指定随机范围
5
+ * @param {Number} rangeMinimum 最小整数,默认0
6
+ * @param {Number} rangeMaximum 最大整数,默认Number.MAX_SAFE_INTEGER
7
+ * @returns {Integer} 生成的随机整数
8
+ */
9
+ function randomInteger(rangeMinimum = 0, rangeMaximum = Number.MAX_SAFE_INTEGER - 1) {
10
+ return Math.floor(randomNumber(rangeMinimum, rangeMaximum + 1));
5
11
  };
6
12
 
7
13
  export default randomInteger;
@@ -1,5 +1,11 @@
1
- function randomNumber(min = 0, max = Number.MAX_SAFE_INTEGER) {
2
- return Math.random() * (max - min) + min;
1
+ /**
2
+ * 产生一个随机数,可指定随机范围
3
+ * @param {Number} rangeMinimum 最小数,默认0
4
+ * @param {Number} rangeMaximum 最大数,默认Number.MAX_SAFE_INTEGER
5
+ * @returns {Number} 生成的随机数
6
+ */
7
+ function randomNumber(rangeMinimum = 0, rangeMaximum = Number.MAX_SAFE_INTEGER) {
8
+ return Math.random() * (rangeMaximum - rangeMinimum) + rangeMinimum;
3
9
  };
4
10
 
5
11
  export default randomNumber;
@@ -1,11 +0,0 @@
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;
@@ -1,10 +0,0 @@
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;
@@ -1,5 +0,0 @@
1
- function clampToRange(value, min, max) {
2
- return value < min ? min : value > max ? max : value;
3
- };
4
-
5
- export default clampToRange;
@@ -1,24 +0,0 @@
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;
@@ -1,10 +0,0 @@
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;