cesium 0.22.0 → 0.23.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.
- checksums.yaml +4 -4
- data/app/assets/javascripts/Cesium.js +5 -2
- data/app/assets/javascripts/Core/Cartesian2.js +58 -0
- data/app/assets/javascripts/Core/Cartesian3.js +67 -7
- data/app/assets/javascripts/Core/Cartesian4.js +63 -0
- data/app/assets/javascripts/Core/CatmullRomSpline.js +183 -163
- data/app/assets/javascripts/Core/CorridorGeometry.js +2 -2
- data/app/assets/javascripts/Core/Ellipsoid.js +16 -0
- data/app/assets/javascripts/Core/ExtentGeometry.js +9 -2
- data/app/assets/javascripts/Core/ExtentOutlineGeometry.js +2 -2
- data/app/assets/javascripts/Core/GeometryPipeline.js +23 -23
- data/app/assets/javascripts/Core/HermiteSpline.js +260 -155
- data/app/assets/javascripts/Core/IndexDatatype.js +43 -34
- data/app/assets/javascripts/Core/LinearSpline.js +118 -0
- data/app/assets/javascripts/Core/Math.js +34 -3
- data/app/assets/javascripts/Core/Matrix2.js +26 -0
- data/app/assets/javascripts/Core/Matrix3.js +98 -0
- data/app/assets/javascripts/Core/Matrix4.js +42 -0
- data/app/assets/javascripts/Core/ObjectOrientedBoundingBox.js +396 -0
- data/app/assets/javascripts/Core/PolygonGeometry.js +87 -47
- data/app/assets/javascripts/Core/PolygonGeometryLibrary.js +20 -17
- data/app/assets/javascripts/Core/PolygonOutlineGeometry.js +68 -40
- data/app/assets/javascripts/Core/PolygonPipeline.js +19 -9
- data/app/assets/javascripts/Core/PrimitiveType.js +33 -36
- data/app/assets/javascripts/Core/Quaternion.js +147 -1
- data/app/assets/javascripts/Core/QuaternionSpline.js +160 -0
- data/app/assets/javascripts/Core/Spline.js +121 -0
- data/app/assets/javascripts/Core/Transforms.js +0 -2
- data/app/assets/javascripts/Core/loadArrayBuffer.js +5 -1
- data/app/assets/javascripts/Core/loadBlob.js +5 -1
- data/app/assets/javascripts/Core/loadText.js +4 -1
- data/app/assets/javascripts/Core/loadWithXhr.js +30 -14
- data/app/assets/javascripts/DynamicScene/PolylineOutlineMaterialProperty.js +2 -2
- data/app/assets/javascripts/Renderer/AutomaticUniforms.js +41 -41
- data/app/assets/javascripts/Renderer/Context.js +171 -201
- data/app/assets/javascripts/Renderer/CubeMapFace.js +2 -2
- data/app/assets/javascripts/Renderer/DrawCommand.js +2 -2
- data/app/assets/javascripts/Renderer/PixelFormat.js +22 -28
- data/app/assets/javascripts/Renderer/ShaderProgram.js +65 -46
- data/app/assets/javascripts/Renderer/Texture.js +1 -1
- data/app/assets/javascripts/Renderer/TextureMagnificationFilter.js +7 -9
- data/app/assets/javascripts/Renderer/TextureMinificationFilter.js +19 -25
- data/app/assets/javascripts/Renderer/TextureWrap.js +11 -13
- data/app/assets/javascripts/Renderer/UniformDatatype.js +29 -29
- data/app/assets/javascripts/Renderer/VertexArray.js +43 -35
- data/app/assets/javascripts/Scene/ArcGisMapServerImageryProvider.js +1 -2
- data/app/assets/javascripts/Scene/BillboardCollection.js +10 -1
- data/app/assets/javascripts/Scene/CameraFlightPath.js +58 -101
- data/app/assets/javascripts/Scene/CentralBody.js +1 -4
- data/app/assets/javascripts/Scene/CentralBodySurface.js +1 -2
- data/app/assets/javascripts/Scene/CesiumTerrainProvider.js +1 -2
- data/app/assets/javascripts/Scene/CustomSensorVolume.js +17 -3
- data/app/assets/javascripts/Scene/EllipsoidPrimitive.js +20 -5
- data/app/assets/javascripts/Scene/EllipsoidSurfaceAppearance.js +1 -2
- data/app/assets/javascripts/Scene/FrameState.js +1 -3
- data/app/assets/javascripts/Scene/GoogleEarthImageryProvider.js +2 -5
- data/app/assets/javascripts/Scene/OpenStreetMapImageryProvider.js +1 -2
- data/app/assets/javascripts/Scene/OrthographicFrustum.js +1 -2
- data/app/assets/javascripts/Scene/PerspectiveOffCenterFrustum.js +1 -2
- data/app/assets/javascripts/Scene/Polygon.js +1 -3
- data/app/assets/javascripts/Scene/Polyline.js +5 -2
- data/app/assets/javascripts/Scene/PolylineCollection.js +4 -6
- data/app/assets/javascripts/Scene/Primitive.js +19 -13
- data/app/assets/javascripts/Scene/PrimitivePipeline.js +1 -1
- data/app/assets/javascripts/Scene/Scene.js +7 -10
- data/app/assets/javascripts/Scene/SceneTransforms.js +1 -3
- data/app/assets/javascripts/Scene/SceneTransitioner.js +11 -11
- data/app/assets/javascripts/Scene/SingleTileImageryProvider.js +1 -2
- data/app/assets/javascripts/Scene/TexturePool.js +1 -1
- data/app/assets/javascripts/Scene/TileMapServiceImageryProvider.js +1 -2
- data/app/assets/javascripts/Scene/VRTheWorldTerrainProvider.js +1 -2
- data/app/assets/javascripts/Scene/ViewportQuad.js +1 -3
- data/app/assets/javascripts/Scene/WebMapServiceImageryProvider.js +1 -2
- data/app/assets/javascripts/ThirdParty/knockout-3.0.0.js +6 -3
- data/app/assets/javascripts/Widgets/CesiumWidget/CesiumWidget.js +4 -3
- data/app/assets/javascripts/Widgets/SceneModePicker/SceneModePickerViewModel.js +1 -1
- data/app/assets/javascripts/Widgets/Viewer/Viewer.js +5 -5
- data/app/assets/javascripts/Widgets/Viewer/viewerDragDropMixin.js +13 -13
- data/app/assets/javascripts/Widgets/Viewer/viewerDynamicObjectMixin.js +6 -6
- data/app/assets/javascripts/Widgets/widgets.css +1 -1
- data/lib/cesium/version.rb +1 -1
- metadata +6 -3
- data/app/assets/javascripts/Core/OrientationInterpolator.js +0 -106
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
/*global define*/
|
|
2
|
-
define(['Core/Color', 'Core/
|
|
2
|
+
define(['Core/Color', 'Core/destroyObject', 'Core/defined', 'Core/DeveloperError', 'Core/BoundingRectangle', 'Core/ComponentDatatype', 'Core/PrimitiveType', 'Core/Geometry', 'Core/GeometryAttribute', 'Scene/Material', 'Renderer/BufferUsage', 'Renderer/BlendingState', 'Renderer/CommandLists', 'Renderer/DrawCommand', 'Renderer/createShaderSource', 'Shaders/ViewportQuadVS', 'Shaders/ViewportQuadFS'], function(
|
|
3
3
|
Color,
|
|
4
|
-
combine,
|
|
5
4
|
destroyObject,
|
|
6
|
-
defaultValue,
|
|
7
5
|
defined,
|
|
8
6
|
DeveloperError,
|
|
9
7
|
BoundingRectangle,
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
/*global define*/
|
|
2
|
-
define(['Core/clone', 'Core/defaultValue', 'Core/defined', 'Core/freezeObject', 'Core/
|
|
2
|
+
define(['Core/clone', 'Core/defaultValue', 'Core/defined', 'Core/freezeObject', 'Core/DeveloperError', 'Core/Event', 'Core/Extent', 'Scene/Credit', 'Scene/ImageryProvider', 'Scene/GeographicTilingScheme'], function(
|
|
3
3
|
clone,
|
|
4
4
|
defaultValue,
|
|
5
5
|
defined,
|
|
6
6
|
freezeObject,
|
|
7
|
-
writeTextToCanvas,
|
|
8
7
|
DeveloperError,
|
|
9
8
|
Event,
|
|
10
9
|
Extent,
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
/**
|
|
2
|
+
@license
|
|
3
|
+
Knockout JavaScript library v3.0.0
|
|
4
|
+
(c) Steven Sanderson - http://knockoutjs.com/
|
|
5
|
+
License: MIT (http://www.opensource.org/licenses/mit-license.php)
|
|
6
|
+
*/
|
|
4
7
|
|
|
5
8
|
(function() {(function(q){var y=this||(0,eval)("this"),w=y.document,K=y.navigator,u=y.jQuery,B=y.JSON;(function(q){"function"===typeof require&&"object"===typeof exports&&"object"===typeof module?q(module.exports||exports):"function"===typeof define&&define.amd?define(["exports"],q):q(y.ko={})})(function(F){function G(a,c){return null===a||typeof a in N?a===c:!1}function H(b,c,d,e){a.d[b]={init:function(b){a.a.f.set(b,L,{});return{controlsDescendantBindings:!0}},update:function(b,h,k,m,f){k=a.a.f.get(b,L);h=a.a.c(h());
|
|
6
9
|
m=!d!==!h;var p=!k.ob;if(p||c||m!==k.Db)p&&(k.ob=a.a.Ya(a.e.childNodes(b),!0)),m?(p||a.e.S(b,a.a.Ya(k.ob)),a.Ta(e?e(f,h):f,b)):a.e.Z(b),k.Db=m}};a.g.Y[b]=!1;a.e.P[b]=!0}var a="undefined"!==typeof F?F:{};a.b=function(b,c){for(var d=b.split("."),e=a,g=0;g<d.length-1;g++)e=e[d[g]];e[d[d.length-1]]=c};a.s=function(a,c,d){a[c]=d};a.version="3.0.0";a.b("version",a.version);a.a=function(){function b(a,b){for(var f in a)a.hasOwnProperty(f)&&b(f,a[f])}function c(k,b){if("input"!==a.a.v(k)||!k.type||"click"!=
|
|
@@ -51,7 +51,7 @@ define(['Core/buildModuleUrl', 'Core/Cartesian2', 'Core/Cartesian3', 'Core/Clock
|
|
|
51
51
|
} catch (e) {
|
|
52
52
|
widget._useDefaultRenderLoop = false;
|
|
53
53
|
widget._renderLoopRunning = false;
|
|
54
|
-
widget.
|
|
54
|
+
widget._renderLoopError.raiseEvent(widget, e);
|
|
55
55
|
if (widget._showRenderLoopErrors) {
|
|
56
56
|
widget.showErrorPanel('An error occurred while rendering. Rendering has stopped.', e);
|
|
57
57
|
console.error(e);
|
|
@@ -212,7 +212,7 @@ define(['Core/buildModuleUrl', 'Core/Cartesian2', 'Core/Cartesian3', 'Core/Clock
|
|
|
212
212
|
this._creditContainer = creditContainer;
|
|
213
213
|
this._canRender = false;
|
|
214
214
|
this._showRenderLoopErrors = defaultValue(options.showRenderLoopErrors, true);
|
|
215
|
-
this.
|
|
215
|
+
this._renderLoopError = new Event();
|
|
216
216
|
|
|
217
217
|
if (options.sceneMode) {
|
|
218
218
|
if (options.sceneMode === SceneMode.SCENE2D) {
|
|
@@ -339,7 +339,7 @@ define(['Core/buildModuleUrl', 'Core/Cartesian2', 'Core/Cartesian3', 'Core/Clock
|
|
|
339
339
|
*/
|
|
340
340
|
onRenderLoopError : {
|
|
341
341
|
get : function() {
|
|
342
|
-
return this.
|
|
342
|
+
return this._renderLoopError;
|
|
343
343
|
}
|
|
344
344
|
},
|
|
345
345
|
|
|
@@ -432,6 +432,7 @@ define(['Core/buildModuleUrl', 'Core/Cartesian2', 'Core/Cartesian3', 'Core/Clock
|
|
|
432
432
|
* @memberof CesiumWidget
|
|
433
433
|
*/
|
|
434
434
|
CesiumWidget.prototype.destroy = function() {
|
|
435
|
+
this._scene = this._scene && this._scene.destroy();
|
|
435
436
|
this._container.removeChild(this._element);
|
|
436
437
|
destroyObject(this);
|
|
437
438
|
};
|
|
@@ -34,7 +34,7 @@ define(['Core/defineProperties', 'Core/defined', 'Core/destroyObject', 'Core/Dev
|
|
|
34
34
|
};
|
|
35
35
|
|
|
36
36
|
this._eventHelper = new EventHelper();
|
|
37
|
-
this._eventHelper.add(transitioner.
|
|
37
|
+
this._eventHelper.add(transitioner.transitionStart, transitionStart);
|
|
38
38
|
|
|
39
39
|
/**
|
|
40
40
|
* Gets or sets the current SceneMode. This property is observable.
|
|
@@ -53,7 +53,7 @@ define(['Core/Cartesian2', 'Core/defaultValue', 'Core/defined', 'Core/DeveloperE
|
|
|
53
53
|
} catch (e) {
|
|
54
54
|
viewer._useDefaultRenderLoop = false;
|
|
55
55
|
viewer._renderLoopRunning = false;
|
|
56
|
-
viewer.
|
|
56
|
+
viewer._renderLoopError.raiseEvent(viewer, e);
|
|
57
57
|
if (viewer._showRenderLoopErrors) {
|
|
58
58
|
/*global console*/
|
|
59
59
|
viewer.cesiumWidget.showErrorPanel('An error occurred while rendering. Rendering has stopped.', e);
|
|
@@ -143,7 +143,7 @@ define(['Core/Cartesian2', 'Core/defaultValue', 'Core/defined', 'Core/DeveloperE
|
|
|
143
143
|
* viewer.extend(Cesium.viewerDynamicObjectMixin);
|
|
144
144
|
*
|
|
145
145
|
* //Show a pop-up alert if we encounter an error when processing a dropped file
|
|
146
|
-
* viewer.
|
|
146
|
+
* viewer.dropError.addEventListener(function(dropHandler, name, error) {
|
|
147
147
|
* console.log(error);
|
|
148
148
|
* window.alert(error);
|
|
149
149
|
* });
|
|
@@ -318,7 +318,7 @@ Either specify options.imageryProvider instead or set options.baseLayerPicker to
|
|
|
318
318
|
this._useDefaultRenderLoop = undefined;
|
|
319
319
|
this._renderLoopRunning = false;
|
|
320
320
|
this._showRenderLoopErrors = defaultValue(options.showRenderLoopErrors, true);
|
|
321
|
-
this.
|
|
321
|
+
this._renderLoopError = new Event();
|
|
322
322
|
|
|
323
323
|
//Start the render loop if not explicitly disabled in options.
|
|
324
324
|
this.useDefaultRenderLoop = defaultValue(options.useDefaultRenderLoop, true);
|
|
@@ -531,9 +531,9 @@ Either specify options.imageryProvider instead or set options.baseLayerPicker to
|
|
|
531
531
|
* @memberof Viewer.prototype
|
|
532
532
|
* @type {Event}
|
|
533
533
|
*/
|
|
534
|
-
|
|
534
|
+
renderLoopError : {
|
|
535
535
|
get : function() {
|
|
536
|
-
return this.
|
|
536
|
+
return this._renderLoopError;
|
|
537
537
|
}
|
|
538
538
|
},
|
|
539
539
|
|
|
@@ -28,14 +28,14 @@ define(['Core/defaultValue', 'Core/defined', 'Core/DeveloperError', 'Core/define
|
|
|
28
28
|
* @exception {DeveloperError} Element with id <options.dropTarget> does not exist in the document.
|
|
29
29
|
* @exception {DeveloperError} dropTarget is already defined by another mixin.
|
|
30
30
|
* @exception {DeveloperError} dropEnabled is already defined by another mixin.
|
|
31
|
-
* @exception {DeveloperError}
|
|
31
|
+
* @exception {DeveloperError} dropError is already defined by another mixin.
|
|
32
32
|
* @exception {DeveloperError} clearOnDrop is already defined by another mixin.
|
|
33
33
|
*
|
|
34
34
|
* @example
|
|
35
35
|
* // Add basic drag and drop support and pop up an alert window on error.
|
|
36
36
|
* var viewer = new Cesium.Viewer('cesiumContainer');
|
|
37
37
|
* viewer.extend(Cesium.viewerDragDropMixin);
|
|
38
|
-
* viewer.
|
|
38
|
+
* viewer.dropError.addEventListener(function(viewerArg, source, error) {
|
|
39
39
|
* window.alert('Error processing ' + source + ':' + error);
|
|
40
40
|
* });
|
|
41
41
|
*/
|
|
@@ -49,8 +49,8 @@ define(['Core/defaultValue', 'Core/defined', 'Core/DeveloperError', 'Core/define
|
|
|
49
49
|
if (viewer.hasOwnProperty('dropEnabled')) {
|
|
50
50
|
throw new DeveloperError('dropEnabled is already defined by another mixin.');
|
|
51
51
|
}
|
|
52
|
-
if (viewer.hasOwnProperty('
|
|
53
|
-
throw new DeveloperError('
|
|
52
|
+
if (viewer.hasOwnProperty('dropError')) {
|
|
53
|
+
throw new DeveloperError('dropError is already defined by another mixin.');
|
|
54
54
|
}
|
|
55
55
|
if (viewer.hasOwnProperty('clearOnDrop')) {
|
|
56
56
|
throw new DeveloperError('clearOnDrop is already defined by another mixin.');
|
|
@@ -60,7 +60,7 @@ define(['Core/defaultValue', 'Core/defined', 'Core/DeveloperError', 'Core/define
|
|
|
60
60
|
|
|
61
61
|
//Local variables to be closed over by defineProperties.
|
|
62
62
|
var dropEnabled = true;
|
|
63
|
-
var
|
|
63
|
+
var dropError = new Event();
|
|
64
64
|
var clearOnDrop = defaultValue(options.clearOnDrop, true);
|
|
65
65
|
var dropTarget = defaultValue(options.dropTarget, viewer.container);
|
|
66
66
|
|
|
@@ -114,9 +114,9 @@ define(['Core/defaultValue', 'Core/defined', 'Core/DeveloperError', 'Core/define
|
|
|
114
114
|
* @memberof viewerDragDropMixin.prototype
|
|
115
115
|
* @type {Event}
|
|
116
116
|
*/
|
|
117
|
-
|
|
117
|
+
dropError : {
|
|
118
118
|
get : function() {
|
|
119
|
-
return
|
|
119
|
+
return dropError;
|
|
120
120
|
}
|
|
121
121
|
},
|
|
122
122
|
|
|
@@ -148,7 +148,7 @@ define(['Core/defaultValue', 'Core/defined', 'Core/DeveloperError', 'Core/define
|
|
|
148
148
|
var f = files[i];
|
|
149
149
|
var reader = new FileReader();
|
|
150
150
|
reader.onload = createOnLoadCallback(viewer, f.name);
|
|
151
|
-
reader.onerror =
|
|
151
|
+
reader.onerror = createDropErrorCallback(viewer, f.name);
|
|
152
152
|
reader.readAsText(f);
|
|
153
153
|
}
|
|
154
154
|
}
|
|
@@ -203,7 +203,7 @@ define(['Core/defaultValue', 'Core/defined', 'Core/DeveloperError', 'Core/define
|
|
|
203
203
|
endsWith(sourceUpperCase, ".TOPOJSON")) {
|
|
204
204
|
DataSource = GeoJsonDataSource;
|
|
205
205
|
} else {
|
|
206
|
-
viewer.
|
|
206
|
+
viewer.dropError.raiseEvent(viewer, source, 'Unrecognized file extension: ' + source);
|
|
207
207
|
return undefined;
|
|
208
208
|
}
|
|
209
209
|
|
|
@@ -213,17 +213,17 @@ define(['Core/defaultValue', 'Core/defined', 'Core/DeveloperError', 'Core/define
|
|
|
213
213
|
when(dataSource.load(JSON.parse(evt.target.result), source), function() {
|
|
214
214
|
viewer.dataSources.add(dataSource);
|
|
215
215
|
}, function(error) {
|
|
216
|
-
viewer.
|
|
216
|
+
viewer.dropError.raiseEvent(viewer, source, error);
|
|
217
217
|
});
|
|
218
218
|
} catch (error) {
|
|
219
|
-
viewer.
|
|
219
|
+
viewer.dropError.raiseEvent(viewer, source, error);
|
|
220
220
|
}
|
|
221
221
|
};
|
|
222
222
|
}
|
|
223
223
|
|
|
224
|
-
function
|
|
224
|
+
function createDropErrorCallback(viewer, name) {
|
|
225
225
|
return function(evt) {
|
|
226
|
-
viewer.
|
|
226
|
+
viewer.dropError.raiseEvent(viewer, name, evt.target.error);
|
|
227
227
|
};
|
|
228
228
|
}
|
|
229
229
|
|
|
@@ -39,12 +39,12 @@ define(['Core/defaultValue', 'Core/defined', 'Core/DeveloperError', 'Core/define
|
|
|
39
39
|
if (viewer.hasOwnProperty('trackedObject')) {
|
|
40
40
|
throw new DeveloperError('trackedObject is already defined by another mixin.');
|
|
41
41
|
}
|
|
42
|
-
if (viewer.hasOwnProperty('
|
|
43
|
-
throw new DeveloperError('
|
|
42
|
+
if (viewer.hasOwnProperty('objectTracked')) {
|
|
43
|
+
throw new DeveloperError('objectTracked is already defined by another mixin.');
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
var eventHelper = new EventHelper();
|
|
47
|
-
var
|
|
47
|
+
var objectTracked = new Event();
|
|
48
48
|
var trackedObject;
|
|
49
49
|
var dynamicObjectView;
|
|
50
50
|
|
|
@@ -138,7 +138,7 @@ define(['Core/defaultValue', 'Core/defined', 'Core/DeveloperError', 'Core/define
|
|
|
138
138
|
if (trackedObject !== value) {
|
|
139
139
|
trackedObject = value;
|
|
140
140
|
dynamicObjectView = defined(value) ? new DynamicObjectView(value, viewer.scene, viewer.centralBody.getEllipsoid()) : undefined;
|
|
141
|
-
|
|
141
|
+
objectTracked.raiseEvent(viewer, value);
|
|
142
142
|
}
|
|
143
143
|
}
|
|
144
144
|
},
|
|
@@ -150,9 +150,9 @@ define(['Core/defaultValue', 'Core/defined', 'Core/DeveloperError', 'Core/define
|
|
|
150
150
|
* @memberof viewerDynamicObjectMixin.prototype
|
|
151
151
|
* @type {Event}
|
|
152
152
|
*/
|
|
153
|
-
|
|
153
|
+
objectTracked : {
|
|
154
154
|
get : function() {
|
|
155
|
-
return
|
|
155
|
+
return objectTracked;
|
|
156
156
|
}
|
|
157
157
|
}
|
|
158
158
|
});
|
data/lib/cesium/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: cesium
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.23.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Bogumil Wrona
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2013-
|
|
11
|
+
date: 2013-12-03 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: railties
|
|
@@ -264,6 +264,7 @@ files:
|
|
|
264
264
|
- app/assets/javascripts/Core/LagrangePolynomialApproximation.js
|
|
265
265
|
- app/assets/javascripts/Core/LeapSecond.js
|
|
266
266
|
- app/assets/javascripts/Core/LinearApproximation.js
|
|
267
|
+
- app/assets/javascripts/Core/LinearSpline.js
|
|
267
268
|
- app/assets/javascripts/Core/loadArrayBuffer.js
|
|
268
269
|
- app/assets/javascripts/Core/loadBlob.js
|
|
269
270
|
- app/assets/javascripts/Core/loadImage.js
|
|
@@ -277,8 +278,8 @@ files:
|
|
|
277
278
|
- app/assets/javascripts/Core/Matrix3.js
|
|
278
279
|
- app/assets/javascripts/Core/Matrix4.js
|
|
279
280
|
- app/assets/javascripts/Core/NearFarScalar.js
|
|
281
|
+
- app/assets/javascripts/Core/ObjectOrientedBoundingBox.js
|
|
280
282
|
- app/assets/javascripts/Core/Occluder.js
|
|
281
|
-
- app/assets/javascripts/Core/OrientationInterpolator.js
|
|
282
283
|
- app/assets/javascripts/Core/Packable.js
|
|
283
284
|
- app/assets/javascripts/Core/PackableForInterpolation.js
|
|
284
285
|
- app/assets/javascripts/Core/package.json
|
|
@@ -297,6 +298,7 @@ files:
|
|
|
297
298
|
- app/assets/javascripts/Core/QuadraticRealPolynomial.js
|
|
298
299
|
- app/assets/javascripts/Core/QuarticRealPolynomial.js
|
|
299
300
|
- app/assets/javascripts/Core/Quaternion.js
|
|
301
|
+
- app/assets/javascripts/Core/QuaternionSpline.js
|
|
300
302
|
- app/assets/javascripts/Core/Queue.js
|
|
301
303
|
- app/assets/javascripts/Core/Ray.js
|
|
302
304
|
- app/assets/javascripts/Core/ReferenceFrame.js
|
|
@@ -312,6 +314,7 @@ files:
|
|
|
312
314
|
- app/assets/javascripts/Core/SphereGeometry.js
|
|
313
315
|
- app/assets/javascripts/Core/SphereOutlineGeometry.js
|
|
314
316
|
- app/assets/javascripts/Core/Spherical.js
|
|
317
|
+
- app/assets/javascripts/Core/Spline.js
|
|
315
318
|
- app/assets/javascripts/Core/TaskProcessor.js
|
|
316
319
|
- app/assets/javascripts/Core/throttleRequestByServer.js
|
|
317
320
|
- app/assets/javascripts/Core/TimeConstants.js
|
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
/*global define*/
|
|
2
|
-
define(['Core/defined', 'Core/DeveloperError', 'Core/Quaternion'], function(
|
|
3
|
-
defined,
|
|
4
|
-
DeveloperError,
|
|
5
|
-
Quaternion) {
|
|
6
|
-
"use strict";
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Smoothly interpolates orientation, represented by <code>Quaternion</code>s, over time.
|
|
10
|
-
* For example, this can be used to set a camera's axes along a path.
|
|
11
|
-
*
|
|
12
|
-
* @alias OrientationInterpolator
|
|
13
|
-
* @constructor
|
|
14
|
-
*
|
|
15
|
-
* @param {Array} controlPoints An array, of at least length 2, of objects with <code>orientation</code> and
|
|
16
|
-
* <code>time</code> properties.
|
|
17
|
-
*
|
|
18
|
-
* @exception {DeveloperError} controlPoints is required. It must be an array with at least a length of 3.
|
|
19
|
-
*
|
|
20
|
-
* @see Quaternion
|
|
21
|
-
* @see CatmullRomSpline
|
|
22
|
-
* @see HermiteSpline
|
|
23
|
-
*/
|
|
24
|
-
var OrientationInterpolator = function(controlPoints) {
|
|
25
|
-
if (!defined(controlPoints) || !(controlPoints instanceof Array) || controlPoints.length < 2) {
|
|
26
|
-
throw new DeveloperError('controlPoints is required. It must be an array with at least a length of 3.');
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
this._points = controlPoints;
|
|
30
|
-
this._lastTimeIndex = 0;
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* Returns the array of control points.
|
|
35
|
-
*
|
|
36
|
-
* @memberof OrientationInterpolator
|
|
37
|
-
* @returns {Array} The array of control points.
|
|
38
|
-
*/
|
|
39
|
-
OrientationInterpolator.prototype.getControlPoints = function() {
|
|
40
|
-
return this._points;
|
|
41
|
-
};
|
|
42
|
-
|
|
43
|
-
function findIndex(orientationInterpolator, time) {
|
|
44
|
-
// Take advantage of temporal coherence by checking current, next and previous intervals
|
|
45
|
-
// for containment of time.
|
|
46
|
-
var i = orientationInterpolator._lastTimeIndex || 0;
|
|
47
|
-
if (time >= orientationInterpolator._points[i].time) {
|
|
48
|
-
if (i + 1 < orientationInterpolator._points.length && time < orientationInterpolator._points[i + 1].time) {
|
|
49
|
-
return i;
|
|
50
|
-
} else if (i + 2 < orientationInterpolator._points.length && time < orientationInterpolator._points[i + 2].time) {
|
|
51
|
-
orientationInterpolator._lastTimeIndex = i + 1;
|
|
52
|
-
return orientationInterpolator._lastTimeIndex;
|
|
53
|
-
}
|
|
54
|
-
} else if (i - 1 >= 0 && time >= orientationInterpolator._points[i - 1].time) {
|
|
55
|
-
orientationInterpolator._lastTimeIndex = i - 1;
|
|
56
|
-
return orientationInterpolator._lastTimeIndex;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
// The above failed so do a linear search. For the use cases so far, the
|
|
60
|
-
// length of the list is less than 10. In the future, if there is a bottle neck,
|
|
61
|
-
// it might be here.
|
|
62
|
-
for (i = 0; i < orientationInterpolator._points.length - 1; ++i) {
|
|
63
|
-
if (time >= orientationInterpolator._points[i].time && time < orientationInterpolator._points[i + 1].time) {
|
|
64
|
-
break;
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
if (i === orientationInterpolator._points.length - 1) {
|
|
69
|
-
i = orientationInterpolator._points.length - 2;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
orientationInterpolator._lastTimeIndex = i;
|
|
73
|
-
return orientationInterpolator._lastTimeIndex;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
/**
|
|
77
|
-
* Evaluates the orientation at a given time.
|
|
78
|
-
*
|
|
79
|
-
* @memberof OrientationInterpolator
|
|
80
|
-
*
|
|
81
|
-
* @param {Number} time The time at which to evaluate the orientation.
|
|
82
|
-
*
|
|
83
|
-
* @exception {DeveloperError} time is required.
|
|
84
|
-
* @exception {DeveloperError} time must be in the range <code>[a<sub>0</sub>, a<sub>n</sub>]</code>,
|
|
85
|
-
* where <code>a<sub>0</sub></code> and <code>a<sub>n</sub></code> are the time properties of first and
|
|
86
|
-
* last elements in the array given during construction, respectively.
|
|
87
|
-
*
|
|
88
|
-
* @returns {Quaternion} The orientation at the given <code>time</code>.
|
|
89
|
-
*/
|
|
90
|
-
OrientationInterpolator.prototype.evaluate = function(time) {
|
|
91
|
-
if (!defined(time)) {
|
|
92
|
-
throw new DeveloperError('time is required.');
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
if (time < this._points[0].time || time > this._points[this._points.length - 1].time) {
|
|
96
|
-
throw new DeveloperError('time is out of range.');
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
var i = findIndex(this, time);
|
|
100
|
-
var u = (time - this._points[i].time) / (this._points[i + 1].time - this._points[i].time);
|
|
101
|
-
|
|
102
|
-
return Quaternion.slerp(this._points[i].orientation, this._points[i + 1].orientation, u);
|
|
103
|
-
};
|
|
104
|
-
|
|
105
|
-
return OrientationInterpolator;
|
|
106
|
-
});
|