@lijuhong1981/cesium.utils 0.0.0-stage → 0.1.1

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.
Files changed (99) hide show
  1. package/README.md +62 -2
  2. package/package.json +45 -4
  3. package/src/additions/Geographic.js +603 -0
  4. package/src/additions/GeographicTransform.js +291 -0
  5. package/src/additions/GeometryInstanceAttributes.js +164 -0
  6. package/src/additions/ModelMatrixTransforms.js +822 -0
  7. package/src/additions/PropertyChangedListener.js +72 -0
  8. package/src/additions/PropertyType.js +30 -0
  9. package/src/additions/StTransforms.js +266 -0
  10. package/src/additions/TranslationRotationScaleTransform.js +809 -0
  11. package/src/additions/index.js +8 -0
  12. package/src/index.js +4 -0
  13. package/src/parses/index.js +46 -0
  14. package/src/parses/parseAltitude.js +32 -0
  15. package/src/parses/parseArcType.js +26 -0
  16. package/src/parses/parseAttitudeToHeadingPitchRoll.js +26 -0
  17. package/src/parses/parseAttitudeToMatrix3.js +17 -0
  18. package/src/parses/parseAttitudeToQuaternion.js +21 -0
  19. package/src/parses/parseCartographicToCartesian.js +21 -0
  20. package/src/parses/parseCartographicsToPositions.js +20 -0
  21. package/src/parses/parseClassificationType.js +24 -0
  22. package/src/parses/parseClockRange.js +26 -0
  23. package/src/parses/parseColorBlendMode.js +26 -0
  24. package/src/parses/parseCornerType.js +24 -0
  25. package/src/parses/parseCullFace.js +28 -0
  26. package/src/parses/parseEulerToHeadingPitchRoll.js +21 -0
  27. package/src/parses/parseEulerToQuaternion.js +18 -0
  28. package/src/parses/parseGeographicToCartesian.js +21 -0
  29. package/src/parses/parseGeographicsToPositions.js +20 -0
  30. package/src/parses/parseHeading.js +28 -0
  31. package/src/parses/parseHeightReference.js +24 -0
  32. package/src/parses/parseHorizontalOrigin.js +26 -0
  33. package/src/parses/parseLabelStyle.js +26 -0
  34. package/src/parses/parseLatitude.js +28 -0
  35. package/src/parses/parseLongitude.js +28 -0
  36. package/src/parses/parsePitch.js +26 -0
  37. package/src/parses/parseRoll.js +26 -0
  38. package/src/parses/parseRotationToHeadingPitchRoll.js +40 -0
  39. package/src/parses/parseRotationToMatrix3.js +25 -0
  40. package/src/parses/parseRotationToQuaternion.js +27 -0
  41. package/src/parses/parseShadowMode.js +26 -0
  42. package/src/parses/parseToBoundingRectangle.js +33 -0
  43. package/src/parses/parseToCartesian2.js +35 -0
  44. package/src/parses/parseToCartesian3.js +37 -0
  45. package/src/parses/parseToCartesian3Array.js +21 -0
  46. package/src/parses/parseToCartesian4.js +39 -0
  47. package/src/parses/parseToCartographic.js +31 -0
  48. package/src/parses/parseToColor.js +33 -0
  49. package/src/parses/parseToDistanceDisplayCondition.js +41 -0
  50. package/src/parses/parseToGeographic.js +31 -0
  51. package/src/parses/parseToHeadingPitchRange.js +45 -0
  52. package/src/parses/parseToJulianDate.js +23 -0
  53. package/src/parses/parseToNearFarScalar.js +33 -0
  54. package/src/parses/parseToPlane.js +37 -0
  55. package/src/parses/parseToPolygonHierarchy.js +48 -0
  56. package/src/parses/parseToRange.js +26 -0
  57. package/src/parses/parseToRectangle.js +32 -0
  58. package/src/parses/parseToTimeInterval.js +45 -0
  59. package/src/parses/parseVerticalOrigin.js +28 -0
  60. package/src/revisions/BoundingSphere.revise.js +107 -0
  61. package/src/revisions/Camera.revise.js +366 -0
  62. package/src/revisions/Cartesian.revise.js +313 -0
  63. package/src/revisions/Cartographic.revise.js +443 -0
  64. package/src/revisions/Check.revise.js +164 -0
  65. package/src/revisions/Color.revise.js +271 -0
  66. package/src/revisions/DistanceDisplayCondition.revise.js +37 -0
  67. package/src/revisions/Ellipsoid.revise.js +64 -0
  68. package/src/revisions/Geometry.revise.js +79 -0
  69. package/src/revisions/Globe.revise.js +92 -0
  70. package/src/revisions/HeadingPitchRoll.revise.js +328 -0
  71. package/src/revisions/JulianDate.revise.js +28 -0
  72. package/src/revisions/Material.revise.js +308 -0
  73. package/src/revisions/Math.revise.js +98 -0
  74. package/src/revisions/Matrix.revise.js +578 -0
  75. package/src/revisions/POI.revise.js +178 -0
  76. package/src/revisions/Plane.revise.js +43 -0
  77. package/src/revisions/PolylinePipeline.revise.js +54 -0
  78. package/src/revisions/PostProcessStageLibrary.revise.js +1143 -0
  79. package/src/revisions/Primitive.revise.js +83 -0
  80. package/src/revisions/Property.revise.js +37 -0
  81. package/src/revisions/Quaternion.revise.js +66 -0
  82. package/src/revisions/Rectangle.revise.js +570 -0
  83. package/src/revisions/SceneTransforms.revise.js +82 -0
  84. package/src/revisions/Spherical.revise.js +35 -0
  85. package/src/revisions/index.js +25 -0
  86. package/src/utils/Scratch.js +165 -0
  87. package/src/utils/computeCirclePositions.js +48 -0
  88. package/src/utils/computeCircleRadius.js +19 -0
  89. package/src/utils/computeModelMatrix.js +109 -0
  90. package/src/utils/computeStTransform.js +57 -0
  91. package/src/utils/createGeometry.js +114 -0
  92. package/src/utils/createPointCloudGeometry.js +79 -0
  93. package/src/utils/getGeometryInstanceAttributes.js +43 -0
  94. package/src/utils/getPositionFromTarget.js +29 -0
  95. package/src/utils/getRenderState.js +35 -0
  96. package/src/utils/index.js +13 -0
  97. package/src/utils/isColorMaterial.js +13 -0
  98. package/src/utils/isTranslucent.js +13 -0
  99. package/src/utils/resolveModelMatrixByFixedFrame.js +30 -0
@@ -0,0 +1,313 @@
1
+ import toFixed from "@lijuhong1981/jsmath/src/toFixed.js";
2
+ import { Cartesian2, Cartesian3, Cartesian4, Cartographic, Check, EllipsoidGeodesic } from "cesium";
3
+ import Geographic from "../additions/Geographic.js";
4
+ import Scratch from "../utils/Scratch.js";
5
+
6
+ /**
7
+ * 扩展 Cesium 的 Cartesian2 类,补充定点数转换等方法。
8
+ * @class Cartesian2
9
+ * @see {@link https://cesium.com/learn/cesiumjs/ref-doc/Cartesian2.html}
10
+ */
11
+ /**
12
+ * 扩展 Cesium 的 Cartesian3 类,补充与 Geographic、Cartographic 互转、地表距离、定点数转换等方法。
13
+ * @class Cartesian3
14
+ * @see {@link https://cesium.com/learn/cesiumjs/ref-doc/Cartesian3.html}
15
+ */
16
+ /**
17
+ * 扩展 Cesium 的 Cartesian4 类,补充定点数转换等方法。
18
+ * @class Cartesian4
19
+ * @see {@link https://cesium.com/learn/cesiumjs/ref-doc/Cartesian4.html}
20
+ */
21
+
22
+ /**
23
+ * 将Cartesian2实例转换为定点数(小数点后几位)
24
+ * @param {Cartesian2} cartesian Cartesian2实例
25
+ * @param {number} [decimalNumber] 小数位数,默认为2位
26
+ * @param {Cartesian2} [result] 输出结果的Cartesian2实例
27
+ * @return {Cartesian2} 返回修改后的result实例或创建一个新的Cartesian2实例
28
+ * @memberof Cartesian2
29
+ * @static
30
+ */
31
+ Cartesian2.toFixed = function (cartesian, decimalNumber, result = new Cartesian2()) {
32
+ Check.defined('cartesian', cartesian);
33
+
34
+ result.x = toFixed(cartesian.x, decimalNumber);
35
+ result.y = toFixed(cartesian.y, decimalNumber);
36
+ return result;
37
+ };
38
+
39
+ /**
40
+ * 将当前Cartesian2实例转换为定点数(小数点后几位)
41
+ * @memberof Cartesian2
42
+ * @see Cartesian2.toFixed
43
+ */
44
+ Cartesian2.prototype.toFixed = function (decimalNumber, result) {
45
+ return Cartesian2.toFixed(this, decimalNumber, result ? result : this);
46
+ };
47
+
48
+ /**
49
+ * 从Geographic实例生成Cartesian3实例
50
+ * @param {Geographic} geographic Geographic实例
51
+ * @param {Ellipsoid} [ellipsoid=Ellipsoid.default] 椭球体,默认为WGS84椭球体
52
+ * @param {Cartesian3} [result] 输出结果的Cartesian3实例
53
+ * @return {Cartesian3} 返回修改后的result实例或创建一个新的Cartesian3实例
54
+ * @memberof Cartesian3
55
+ * @static
56
+ */
57
+ Cartesian3.fromGeographic = function (geographic, ellipsoid, result) {
58
+ //>>includeStart('debug', pragmas.debug);
59
+ Check.defined('geographic', geographic);
60
+ //>>includeEnd('debug');
61
+
62
+ return Cartesian3.fromDegrees(geographic.longitude, geographic.latitude, geographic.height, ellipsoid, result);
63
+ };
64
+
65
+ /**
66
+ * 从Geographic实例数组生成Cartesian3实例数组
67
+ * @param {Array<Geographic>} geographics Geographic实例数组
68
+ * @param {Ellipsoid} [ellipsoid=Ellipsoid.default] 椭球体,默认为WGS84椭球体
69
+ * @param {Array} [result] 输出结果的数组
70
+ * @return {Array<Cartesian3>} 返回修改后的result实例或创建一个新的Cartesian3数组实例
71
+ * @memberof Cartesian3
72
+ * @static
73
+ */
74
+ Cartesian3.fromGeographicArray = function (geographics, ellipsoid, result = []) {
75
+ //>>includeStart('debug', pragmas.debug);
76
+ Check.typeOf.array('geographics', geographics);
77
+ //>>includeEnd('debug');
78
+
79
+ for (let i = 0; i < geographics.length; i++) {
80
+ result[i] = Cartesian3.fromGeographic(geographics[i], ellipsoid, result[i]);
81
+ }
82
+ return result;
83
+ };
84
+
85
+ /**
86
+ * 将Cartesian3实例转换为Geographic实例
87
+ * @param {Cartesian3} cartesian Cartesian3实例
88
+ * @param {Ellipsoid} [ellipsoid=Ellipsoid.default] 椭球体,默认为WGS84椭球体
89
+ * @param {Geographic} [result] 输出结果的Geographic实例
90
+ * @return {Geographic} 返回修改后的result实例或创建一个新的Geographic实例
91
+ * @memberof Cartesian3
92
+ * @static
93
+ */
94
+ Cartesian3.toGeographic = function (cartesian, ellipsoid, result) {
95
+ return Geographic.fromCartesian(cartesian, ellipsoid, result);
96
+ };
97
+
98
+ /**
99
+ * 将当前Cartesian3实例转换为Geographic实例
100
+ * @memberof Cartesian3
101
+ * @see Cartesian3.toGeographic
102
+ */
103
+ Cartesian3.prototype.toGeographic = function (ellipsoid, result) {
104
+ return Cartesian3.toGeographic(this, ellipsoid, result);
105
+ };
106
+
107
+ /**
108
+ * Cartesian3实例数组转为Geographic实例数组
109
+ * @param {Array<Cartesian3>} cartesians Cartesian3实例数组
110
+ * @param {Ellipsoid} [ellipsoid=Ellipsoid.default] 椭球体,默认为WGS84椭球体
111
+ * @param {Array} [result] 输出结果的数组
112
+ * @return {Array<Geographic>} 返回修改后的result实例或创建一个新的Geographic数组实例
113
+ * @memberof Cartesian3
114
+ * @static
115
+ */
116
+ Cartesian3.toGeographicArray = function (cartesians, ellipsoid, result) {
117
+ return Geographic.fromCartesianArray(cartesians, ellipsoid, result);
118
+ }
119
+
120
+ /**
121
+ * 从Cartographic实例创建生成Cartesian3实例
122
+ * @param {Cartographic} cartographic Cartographic实例
123
+ * @param {Ellipsoid} [ellipsoid=Ellipsoid.default] 椭球体,默认为WGS84椭球体
124
+ * @param {Cartesian3} [result] 输出结果的Cartesian3实例
125
+ * @return {Cartesian3} 返回修改后的result实例或创建一个新的Cartesian3实例
126
+ * @memberof Cartesian3
127
+ * @static
128
+ */
129
+ Cartesian3.fromCartographic = function (cartographic, ellipsoid, result) {
130
+ //>>includeStart('debug', pragmas.debug);
131
+ Check.defined('cartographic', cartographic);
132
+ //>>includeEnd('debug');
133
+
134
+ return Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, cartographic.height, ellipsoid, result);
135
+ };
136
+
137
+ /**
138
+ * 从Cartographic实例数组生成Cartesian3实例数组
139
+ * @param {Array<Cartographic>} cartographics Cartographic实例数组
140
+ * @param {Ellipsoid} [ellipsoid=Ellipsoid.default] 椭球体,默认为WGS84椭球体
141
+ * @param {Array} [result] 输出结果的数组
142
+ * @return {Array<Cartesian3>} 返回修改后的result实例或创建一个新的Cartesian3数组实例
143
+ * @memberof Cartesian3
144
+ * @static
145
+ */
146
+ Cartesian3.fromCartographicArray = function (cartographics, ellipsoid, result = []) {
147
+ //>>includeStart('debug', pragmas.debug);
148
+ Check.typeOf.array('cartographics', cartographics);
149
+ //>>includeEnd('debug');
150
+
151
+ for (let i = 0; i < cartographics.length; i++) {
152
+ result[i] = Cartesian3.fromCartographic(cartographics[i], ellipsoid, result[i]);
153
+ }
154
+ return result;
155
+ };
156
+
157
+ /**
158
+ * 将Cartesian3实例转换为Cartographic实例
159
+ * @param {Cartesian3} cartesian Cartesian3实例
160
+ * @param {Ellipsoid} [ellipsoid=Ellipsoid.default] 椭球体,默认为WGS84椭球体
161
+ * @param {Cartographic} [result] 输出结果的Cartographic实例
162
+ * @return {Cartographic} 返回修改后的result实例或创建一个新的Cartographic实例
163
+ * @memberof Cartesian3
164
+ * @static
165
+ */
166
+ Cartesian3.toCartographic = function (cartesian, ellipsoid, result) {
167
+ return Cartographic.fromCartesian(cartesian, ellipsoid, result);
168
+ };
169
+
170
+ /**
171
+ * 将当前Cartesian3实例转换为Cartographic实例
172
+ * @memberof Cartesian3
173
+ * @see Cartesian3.toCartographic
174
+ */
175
+ Cartesian3.prototype.toCartographic = function (ellipsoid, result) {
176
+ return Cartesian3.toCartographic(this, ellipsoid, result);
177
+ };
178
+
179
+ /**
180
+ * Cartesian3实例数组转为Cartographic实例数组
181
+ * @param {Array<Cartesian3>} cartesians Cartesian3实例数组
182
+ * @param {Ellipsoid} [ellipsoid=Ellipsoid.default] 椭球体,默认为WGS84椭球体
183
+ * @param {Array} [result] 输出结果的数组
184
+ * @return {Array<Cartographic>} 返回修改后的result实例或创建一个新的Cartographic数组实例
185
+ * @memberof Cartesian3
186
+ * @static
187
+ */
188
+ Cartesian3.toCartographicArray = function (cartesians, ellipsoid, result) {
189
+ return Cartographic.fromCartesianArray(cartesians, ellipsoid, result);
190
+ };
191
+
192
+ /**
193
+ * 计算当前Cartesian3实例与另一个Cartesian3实例之间的直线距离
194
+ * @memberof Cartesian3
195
+ * @see Cartesian3.distance
196
+ */
197
+ Cartesian3.prototype.distance = function (other) {
198
+ return Cartesian3.distance(this, other);
199
+ };
200
+
201
+ /**
202
+ * 计算两个Cartesian3实例间的地表距离(不考虑高度)
203
+ * @param {Cartesian3} left 第一个Cartesian3实例
204
+ * @param {Cartesian3} right 第二个Cartesian3实例
205
+ * @param {Ellipsoid} [ellipsoid=Ellipsoid.default] 椭球体,默认为WGS84椭球体
206
+ * @return {number} 返回两点间的地表距离(不考虑高度)
207
+ * @memberof Cartesian3
208
+ * @static
209
+ */
210
+ Cartesian3.surfaceDistance = function (left, right, ellipsoid) {
211
+ Check.defined("left", left);
212
+ Check.defined("right", right);
213
+
214
+ const start = Cartesian3.toCartographic(left, ellipsoid, Scratch.scratchLeftCartographic);
215
+ const end = Cartesian3.toCartographic(right, ellipsoid, Scratch.scratchRightCartographic);
216
+
217
+ return new EllipsoidGeodesic(start, end, ellipsoid).surfaceDistance;
218
+ };
219
+
220
+ /**
221
+ * 计算当前Cartesian3实例与另一个Cartesian3实例之间的地表距离(不考虑高度)
222
+ * @memberof Cartesian3
223
+ * @see Cartesian3.surfaceDistance
224
+ */
225
+ Cartesian3.prototype.surfaceDistance = function (other, ellipsoid) {
226
+ return Cartesian3.surfaceDistance(this, other, ellipsoid);
227
+ };
228
+
229
+ /**
230
+ * 将当前Cartesian3实例转换为数组
231
+ * @param {Array} [array] 输出结果的数组
232
+ * @param {number} [startingIndex = 0] 数组开始索引
233
+ * @return {Array<number>} 返回修改后的array数组或创建一个新的数组
234
+ * @memberof Cartesian3
235
+ */
236
+ Cartesian3.prototype.toArray = function (array, startingIndex) {
237
+ return Cartesian3.pack(this, array, startingIndex);
238
+ };
239
+
240
+ /**
241
+ * 将当前Cartesian3实例标准化(单位化)
242
+ * @memberof Cartesian3
243
+ * @see Cartesian3.normalize
244
+ */
245
+ Cartesian3.prototype.normalize = function (result) {
246
+ return Cartesian3.normalize(this, result ? result : this);
247
+ };
248
+
249
+ /**
250
+ * 将当前Cartesian3实例取反(乘以-1)
251
+ * @memberof Cartesian3
252
+ * @see Cartesian3.negate
253
+ */
254
+ Cartesian3.prototype.negate = function (result) {
255
+ return Cartesian3.negate(this, result ? result : this);
256
+ };
257
+
258
+ /**
259
+ * 将Cartesian3实例转换为定点数(小数点后几位)
260
+ * @param {Cartesian3} cartesian Cartesian3实例
261
+ * @param {number} [decimalNumber] 小数位数,默认为2位
262
+ * @param {Cartesian3} [result] 输出结果的Cartesian3实例
263
+ * @return {Cartesian3} 返回修改后的result实例或创建一个新的Cartesian3实例
264
+ * @memberof Cartesian3
265
+ * @static
266
+ */
267
+ Cartesian3.toFixed = function (cartesian, decimalNumber, result = new Cartesian3()) {
268
+ Check.defined('cartesian', cartesian);
269
+
270
+ result.x = toFixed(cartesian.x, decimalNumber);
271
+ result.y = toFixed(cartesian.y, decimalNumber);
272
+ result.z = toFixed(cartesian.z, decimalNumber);
273
+ return result;
274
+ };
275
+
276
+ /**
277
+ * 将当前Cartesian3实例转换为定点数(小数点后几位)
278
+ * @memberof Cartesian3
279
+ * @see Cartesian3.toFixed
280
+ */
281
+ Cartesian3.prototype.toFixed = function (decimalNumber, result) {
282
+ return Cartesian3.toFixed(this, decimalNumber, result ? result : this);
283
+ };
284
+
285
+ /**
286
+ * 将Cartesian4实例转换为定点数(小数点后几位)
287
+ * @param {Cartesian4} cartesian Cartesian4实例
288
+ * @param {number} [decimalNumber] 小数位数,默认为2位
289
+ * @param {Cartesian4} [result] 输出结果的Cartesian4实例
290
+ * @return {Cartesian4} 返回修改后的result实例或创建一个新的Cartesian4实例
291
+ * @memberof Cartesian4
292
+ * @static
293
+ */
294
+ Cartesian4.toFixed = function (cartesian, decimalNumber, result = new Cartesian4()) {
295
+ Check.defined('cartesian', cartesian);
296
+
297
+ result.x = toFixed(cartesian.x, decimalNumber);
298
+ result.y = toFixed(cartesian.y, decimalNumber);
299
+ result.z = toFixed(cartesian.z, decimalNumber);
300
+ result.w = toFixed(cartesian.w, decimalNumber);
301
+ return result;
302
+ };
303
+
304
+ /**
305
+ * 将当前Cartesian4实例转换为定点数(小数点后几位)
306
+ * @memberof Cartesian4
307
+ * @see Cartesian4.toFixed
308
+ */
309
+ Cartesian4.prototype.toFixed = function (decimalNumber, result) {
310
+ return Cartesian4.toFixed(this, decimalNumber, result ? result : this);
311
+ };
312
+
313
+ export { Cartesian2, Cartesian3, Cartesian4 };