@lijuhong1981/jsmath 1.0.5 → 1.0.7
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 +2 -2
- package/package.json +1 -1
- package/src/{Interval.js → Range.js} +110 -82
- package/src/convertToLongitudeRange.js +1 -1
package/index.js
CHANGED
|
@@ -25,7 +25,7 @@ import lerp from "./src/lerp.js";
|
|
|
25
25
|
import percentInRange from "./src/percentInRange.js";
|
|
26
26
|
import randomInteger from "./src/randomInteger.js";
|
|
27
27
|
import randomNumber from "./src/randomNumber.js";
|
|
28
|
-
import
|
|
28
|
+
import Range from "./src/Range.js";
|
|
29
29
|
|
|
30
30
|
export {
|
|
31
31
|
PI,
|
|
@@ -53,5 +53,5 @@ export {
|
|
|
53
53
|
percentInRange,
|
|
54
54
|
randomInteger,
|
|
55
55
|
randomNumber,
|
|
56
|
-
|
|
56
|
+
Range,
|
|
57
57
|
};
|
package/package.json
CHANGED
|
@@ -3,18 +3,18 @@ import isBetween from "./isBetween.js";
|
|
|
3
3
|
import lerp from "./lerp.js";
|
|
4
4
|
import percentInRange from "./percentInRange.js";
|
|
5
5
|
|
|
6
|
-
function checkMinMaxValue(
|
|
7
|
-
if (
|
|
8
|
-
const temp =
|
|
9
|
-
|
|
10
|
-
|
|
6
|
+
function checkMinMaxValue(range) {
|
|
7
|
+
if (range.minimum > range.maximum) {
|
|
8
|
+
const temp = range.minimum;
|
|
9
|
+
range.minimum = range.maximum;
|
|
10
|
+
range.maximum = temp;
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
|
-
*
|
|
15
|
+
* Range对象用来表示数学上的区间集合
|
|
16
16
|
*/
|
|
17
|
-
class
|
|
17
|
+
class Range {
|
|
18
18
|
/**
|
|
19
19
|
* 构造函数
|
|
20
20
|
* @param {Number} minimum 区间较小数,默认0
|
|
@@ -30,10 +30,38 @@ class Interval {
|
|
|
30
30
|
checkMinMaxValue(this);
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
-
get
|
|
33
|
+
get isRange() {
|
|
34
34
|
return true;
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
+
/**
|
|
38
|
+
* @deprecated
|
|
39
|
+
*/
|
|
40
|
+
set min(value) {
|
|
41
|
+
this.minimum = value;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* @deprecated
|
|
46
|
+
*/
|
|
47
|
+
get min() {
|
|
48
|
+
return this.minimum;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* @deprecated
|
|
53
|
+
*/
|
|
54
|
+
set max(value) {
|
|
55
|
+
this.maximum = value;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* @deprecated
|
|
60
|
+
*/
|
|
61
|
+
get max() {
|
|
62
|
+
return this.maximum;
|
|
63
|
+
}
|
|
64
|
+
|
|
37
65
|
/**
|
|
38
66
|
* 判断该区间是否为空集
|
|
39
67
|
* @returns {Boolean}
|
|
@@ -83,13 +111,13 @@ class Interval {
|
|
|
83
111
|
|
|
84
112
|
/**
|
|
85
113
|
* 判断两个区间对象是否相等
|
|
86
|
-
* @param {
|
|
87
|
-
* @param {
|
|
114
|
+
* @param {Range} left
|
|
115
|
+
* @param {Range} right
|
|
88
116
|
* @returns {Boolean}
|
|
89
117
|
*/
|
|
90
118
|
static equals(left, right) {
|
|
91
|
-
Check.instanceOf('left', left,
|
|
92
|
-
Check.instanceOf('right', right,
|
|
119
|
+
Check.instanceOf('left', left, Range);
|
|
120
|
+
Check.instanceOf('right', right, Range);
|
|
93
121
|
if (left === right)
|
|
94
122
|
return true;
|
|
95
123
|
if (left && right && left.minimum === right.minimum && left.maximum === right.maximum && left.containsMinimum === right.containsMinimum && left.containsMaximum === right.containsMaximum)
|
|
@@ -99,23 +127,23 @@ class Interval {
|
|
|
99
127
|
|
|
100
128
|
/**
|
|
101
129
|
* 判断当前区间是否与另一个区间相等
|
|
102
|
-
* @param {
|
|
130
|
+
* @param {Range} other
|
|
103
131
|
* @returns {Boolean}
|
|
104
132
|
*/
|
|
105
133
|
equals(other) {
|
|
106
|
-
return
|
|
134
|
+
return Range.equals(this, other);
|
|
107
135
|
}
|
|
108
136
|
|
|
109
137
|
/**
|
|
110
138
|
* 两个区间相加,left + right
|
|
111
|
-
* @param {
|
|
112
|
-
* @param {
|
|
113
|
-
* @param {
|
|
114
|
-
* @returns {
|
|
139
|
+
* @param {Range} left
|
|
140
|
+
* @param {Range} right
|
|
141
|
+
* @param {Range} result 结果区间对象,可不填
|
|
142
|
+
* @returns {Range} 结果区间对象
|
|
115
143
|
*/
|
|
116
|
-
static add(left, right, result = new
|
|
117
|
-
Check.instanceOf('left', left,
|
|
118
|
-
Check.instanceOf('right', right,
|
|
144
|
+
static add(left, right, result = new Range()) {
|
|
145
|
+
Check.instanceOf('left', left, Range);
|
|
146
|
+
Check.instanceOf('right', right, Range);
|
|
119
147
|
|
|
120
148
|
result.minimum = left.minimum + right.minimum;
|
|
121
149
|
result.maximum = left.maximum + right.maximum;
|
|
@@ -127,23 +155,23 @@ class Interval {
|
|
|
127
155
|
|
|
128
156
|
/**
|
|
129
157
|
* 当前区间与另一个区间相加
|
|
130
|
-
* @param {
|
|
131
|
-
* @returns {
|
|
158
|
+
* @param {Range} other
|
|
159
|
+
* @returns {Range} 当前区间对象
|
|
132
160
|
*/
|
|
133
161
|
add(other) {
|
|
134
|
-
return
|
|
162
|
+
return Range.add(this, other, this);
|
|
135
163
|
}
|
|
136
164
|
|
|
137
165
|
/**
|
|
138
166
|
* 两个区间相减,left - right
|
|
139
|
-
* @param {
|
|
140
|
-
* @param {
|
|
141
|
-
* @param {
|
|
142
|
-
* @returns {
|
|
167
|
+
* @param {Range} left
|
|
168
|
+
* @param {Range} right
|
|
169
|
+
* @param {Range} result 结果区间对象,可不填
|
|
170
|
+
* @returns {Range} 结果区间对象
|
|
143
171
|
*/
|
|
144
|
-
static subtract(left, right, result = new
|
|
145
|
-
Check.instanceOf('left', left,
|
|
146
|
-
Check.instanceOf('right', right,
|
|
172
|
+
static subtract(left, right, result = new Range()) {
|
|
173
|
+
Check.instanceOf('left', left, Range);
|
|
174
|
+
Check.instanceOf('right', right, Range);
|
|
147
175
|
|
|
148
176
|
result.minimum = left.minimum - right.minimum;
|
|
149
177
|
result.maximum = left.maximum - right.maximum;
|
|
@@ -155,23 +183,23 @@ class Interval {
|
|
|
155
183
|
|
|
156
184
|
/**
|
|
157
185
|
* 当前区间减去另一个区间
|
|
158
|
-
* @param {
|
|
159
|
-
* @returns {
|
|
186
|
+
* @param {Range} other
|
|
187
|
+
* @returns {Range} 当前区间对象
|
|
160
188
|
*/
|
|
161
189
|
subtract(other) {
|
|
162
|
-
return
|
|
190
|
+
return Range.subtract(this, other, this);
|
|
163
191
|
}
|
|
164
192
|
|
|
165
193
|
/**
|
|
166
194
|
* 两个区间相乘,left x right
|
|
167
|
-
* @param {
|
|
168
|
-
* @param {
|
|
169
|
-
* @param {
|
|
170
|
-
* @returns {
|
|
195
|
+
* @param {Range} left
|
|
196
|
+
* @param {Range} right
|
|
197
|
+
* @param {Range} result 结果区间对象,可不填
|
|
198
|
+
* @returns {Range} 结果区间对象
|
|
171
199
|
*/
|
|
172
|
-
static multiply(left, right, result = new
|
|
173
|
-
Check.instanceOf('left', left,
|
|
174
|
-
Check.instanceOf('right', right,
|
|
200
|
+
static multiply(left, right, result = new Range()) {
|
|
201
|
+
Check.instanceOf('left', left, Range);
|
|
202
|
+
Check.instanceOf('right', right, Range);
|
|
175
203
|
|
|
176
204
|
const ac = left.minimum * right.minimum;
|
|
177
205
|
const ad = left.minimum * right.maximum;
|
|
@@ -187,23 +215,23 @@ class Interval {
|
|
|
187
215
|
|
|
188
216
|
/**
|
|
189
217
|
* 当前区间乘以另一个区间
|
|
190
|
-
* @param {
|
|
191
|
-
* @returns {
|
|
218
|
+
* @param {Range} other
|
|
219
|
+
* @returns {Range} 当前区间对象
|
|
192
220
|
*/
|
|
193
221
|
multiply(other) {
|
|
194
|
-
return
|
|
222
|
+
return Range.multiply(this, other, this);
|
|
195
223
|
}
|
|
196
224
|
|
|
197
225
|
/**
|
|
198
226
|
* 两个区间相除,left / right
|
|
199
|
-
* @param {
|
|
200
|
-
* @param {
|
|
201
|
-
* @param {
|
|
202
|
-
* @returns {
|
|
227
|
+
* @param {Range} left
|
|
228
|
+
* @param {Range} right
|
|
229
|
+
* @param {Range} result 结果区间对象,可不填
|
|
230
|
+
* @returns {Range} 结果区间对象
|
|
203
231
|
*/
|
|
204
|
-
static divide(left, right, result = new
|
|
205
|
-
Check.instanceOf('left', left,
|
|
206
|
-
Check.instanceOf('right', right,
|
|
232
|
+
static divide(left, right, result = new Range()) {
|
|
233
|
+
Check.instanceOf('left', left, Range);
|
|
234
|
+
Check.instanceOf('right', right, Range);
|
|
207
235
|
|
|
208
236
|
const ac = left.minimum / right.minimum;
|
|
209
237
|
const ad = left.minimum / right.maximum;
|
|
@@ -219,53 +247,53 @@ class Interval {
|
|
|
219
247
|
|
|
220
248
|
/**
|
|
221
249
|
* 当前区间除以另一个区间
|
|
222
|
-
* @param {
|
|
223
|
-
* @returns {
|
|
250
|
+
* @param {Range} other
|
|
251
|
+
* @returns {Range} 当前区间对象
|
|
224
252
|
*/
|
|
225
253
|
divide(other) {
|
|
226
|
-
return
|
|
254
|
+
return Range.divide(this, other, this);
|
|
227
255
|
}
|
|
228
256
|
|
|
229
257
|
/**
|
|
230
258
|
* 克隆一个区间对象
|
|
231
|
-
* @param {
|
|
232
|
-
* @param {
|
|
233
|
-
* @returns {
|
|
259
|
+
* @param {Range} range 需要克隆的区间对象
|
|
260
|
+
* @param {Range} result 结果区间对象,可不设置
|
|
261
|
+
* @returns {Range} 结果区间对象
|
|
234
262
|
*/
|
|
235
|
-
static clone(
|
|
236
|
-
Check.instanceOf('
|
|
263
|
+
static clone(range, result = new Range()) {
|
|
264
|
+
Check.instanceOf('range', range, Range);
|
|
237
265
|
|
|
238
|
-
result.minimum =
|
|
239
|
-
result.maximum =
|
|
240
|
-
result.containsMinimum =
|
|
241
|
-
result.containsMaximum =
|
|
266
|
+
result.minimum = range.minimum;
|
|
267
|
+
result.maximum = range.maximum;
|
|
268
|
+
result.containsMinimum = range.containsMinimum;
|
|
269
|
+
result.containsMaximum = range.containsMaximum;
|
|
242
270
|
|
|
243
271
|
return result;
|
|
244
272
|
}
|
|
245
273
|
|
|
246
274
|
/**
|
|
247
275
|
* 克隆当前区间对象
|
|
248
|
-
* @param {
|
|
249
|
-
* @returns {
|
|
276
|
+
* @param {Range} result 结果区间对象,可不设置
|
|
277
|
+
* @returns {Range} 结果区间对象
|
|
250
278
|
*/
|
|
251
279
|
clone(result) {
|
|
252
|
-
return
|
|
280
|
+
return Range.clone(this, result);
|
|
253
281
|
}
|
|
254
282
|
|
|
255
283
|
/**
|
|
256
284
|
* 将一个区间对象的所有属性打包到一个数组中
|
|
257
|
-
* @param {
|
|
285
|
+
* @param {Range} range 需要打包的区间对象
|
|
258
286
|
* @param {Array} array 打包到的数组
|
|
259
287
|
* @param {Integer} startingIndex 数组起始索引,默认0
|
|
260
288
|
* @returns {Array} 打包后的数组
|
|
261
289
|
*/
|
|
262
|
-
static pack(
|
|
263
|
-
Check.instanceOf('
|
|
290
|
+
static pack(range, array = [], startingIndex = 0) {
|
|
291
|
+
Check.instanceOf('range', range, Range);
|
|
264
292
|
|
|
265
|
-
array[startingIndex++] =
|
|
266
|
-
array[startingIndex++] =
|
|
267
|
-
array[startingIndex++] =
|
|
268
|
-
array[startingIndex++] =
|
|
293
|
+
array[startingIndex++] = range.minimum;
|
|
294
|
+
array[startingIndex++] = range.maximum;
|
|
295
|
+
array[startingIndex++] = range.containsMinimum;
|
|
296
|
+
array[startingIndex++] = range.containsMaximum;
|
|
269
297
|
|
|
270
298
|
return array;
|
|
271
299
|
}
|
|
@@ -277,17 +305,17 @@ class Interval {
|
|
|
277
305
|
* @returns {Array} 打包后的数组
|
|
278
306
|
*/
|
|
279
307
|
toArray(array, startingIndex = 0) {
|
|
280
|
-
return
|
|
308
|
+
return Range.pack(this, array, startingIndex);
|
|
281
309
|
}
|
|
282
310
|
|
|
283
311
|
/**
|
|
284
312
|
* 从一个数组中提取一个区间对象的所有属性
|
|
285
313
|
* @param {Array} array 提取属性的数组
|
|
286
314
|
* @param {Integer} startingIndex 数组起始索引,默认0
|
|
287
|
-
* @param {
|
|
288
|
-
* @returns {
|
|
315
|
+
* @param {Range} result 结果区间对象,可不填
|
|
316
|
+
* @returns {Range} 结果区间对象
|
|
289
317
|
*/
|
|
290
|
-
static unpack(array, startingIndex = 0, result = new
|
|
318
|
+
static unpack(array, startingIndex = 0, result = new Range()) {
|
|
291
319
|
Check.typeOf.array("array", array);
|
|
292
320
|
//>>includeEnd('debug');
|
|
293
321
|
|
|
@@ -303,17 +331,17 @@ class Interval {
|
|
|
303
331
|
* 从一个数组给当前区间对象赋值
|
|
304
332
|
* @param {Array} array 提取属性的数组
|
|
305
333
|
* @param {Integer} startingIndex 数组起始索引,默认0
|
|
306
|
-
* @returns {
|
|
334
|
+
* @returns {Range} 当前区间对象
|
|
307
335
|
*/
|
|
308
336
|
fromArray(array, startingIndex = 0) {
|
|
309
|
-
return
|
|
337
|
+
return Range.unpack(array, startingIndex, this);
|
|
310
338
|
}
|
|
311
339
|
|
|
312
340
|
toString() {
|
|
313
|
-
return '
|
|
341
|
+
return 'Range:' + this.containsMinimum ? '[' : '(' + this.minimum + ', ' + this.maximum + this.containsMaximum ? ']' : ')'
|
|
314
342
|
}
|
|
315
343
|
};
|
|
316
344
|
|
|
317
|
-
|
|
345
|
+
Range.packedLength = 4;
|
|
318
346
|
|
|
319
|
-
export default
|
|
347
|
+
export default Range;
|