cesium 0.21 → 0.21.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.
- checksums.yaml +4 -4
- data/app/assets/javascripts/Assets/Textures/moonSmall.jpg +0 -0
- data/app/assets/javascripts/Cesium.js +10 -1
- data/app/assets/javascripts/Core/Cartesian2.js +28 -0
- data/app/assets/javascripts/Core/Cartesian3.js +28 -0
- data/app/assets/javascripts/Core/Cartesian4.js +28 -0
- data/app/assets/javascripts/Core/CatmullRomSpline.js +3 -3
- data/app/assets/javascripts/Core/Clock.js +7 -7
- data/app/assets/javascripts/Core/Color.js +1 -1
- data/app/assets/javascripts/Core/ComponentDatatype.js +11 -7
- data/app/assets/javascripts/Core/CorridorGeometryLibrary.js +23 -29
- data/app/assets/javascripts/Core/Ellipsoid.js +6 -0
- data/app/assets/javascripts/Core/EllipsoidTangentPlane.js +5 -4
- data/app/assets/javascripts/Core/Event.js +2 -1
- data/app/assets/javascripts/Core/ExtentGeometry.js +1 -1
- data/app/assets/javascripts/Core/ExtentOutlineGeometry.js +1 -1
- data/app/assets/javascripts/Core/GeometryAttributes.js +1 -1
- data/app/assets/javascripts/Core/GeometryInstance.js +2 -2
- data/app/assets/javascripts/Core/GeometryPipeline.js +10 -7
- data/app/assets/javascripts/Core/HermiteSpline.js +1 -1
- data/app/assets/javascripts/Core/Iau2000Orientation.js +132 -0
- data/app/assets/javascripts/Core/IauOrientationAxes.js +98 -0
- data/app/assets/javascripts/Core/IauOrientationParameters.js +48 -0
- data/app/assets/javascripts/Core/IntersectionTests.js +5 -5
- data/app/assets/javascripts/Core/JulianDate.js +27 -5
- data/app/assets/javascripts/Core/Math.js +9 -0
- data/app/assets/javascripts/Core/Matrix2.js +1 -142
- data/app/assets/javascripts/Core/Matrix3.js +168 -153
- data/app/assets/javascripts/Core/Matrix4.js +0 -249
- data/app/assets/javascripts/Core/NearFarScalar.js +13 -0
- data/app/assets/javascripts/Core/PolygonGeometry.js +1 -1
- data/app/assets/javascripts/Core/PolygonOutlineGeometry.js +2 -2
- data/app/assets/javascripts/Core/PolygonPipeline.js +2 -2
- data/app/assets/javascripts/Core/PolylinePipeline.js +7 -3
- data/app/assets/javascripts/Core/PolylineVolumeGeometry.js +239 -0
- data/app/assets/javascripts/Core/PolylineVolumeGeometryLibrary.js +404 -0
- data/app/assets/javascripts/Core/PolylineVolumeOutlineGeometry.js +154 -0
- data/app/assets/javascripts/Core/Quaternion.js +37 -10
- data/app/assets/javascripts/Core/Shapes.js +26 -2
- data/app/assets/javascripts/Core/Simon1994PlanetaryPositions.js +3 -3
- data/app/assets/javascripts/Core/TimeInterval.js +28 -17
- data/app/assets/javascripts/Core/TimeIntervalCollection.js +30 -0
- data/app/assets/javascripts/Core/Transforms.js +5 -5
- data/app/assets/javascripts/Core/WallGeometryLibrary.js +2 -2
- data/app/assets/javascripts/Core/getFilenameFromUri.js +37 -0
- data/app/assets/javascripts/DynamicScene/ColorMaterialProperty.js +2 -2
- data/app/assets/javascripts/DynamicScene/CzmlDataSource.js +96 -18
- data/app/assets/javascripts/DynamicScene/DataSource.js +8 -0
- data/app/assets/javascripts/DynamicScene/DynamicBillboard.js +15 -3
- data/app/assets/javascripts/DynamicScene/DynamicBillboardVisualizer.js +6 -1
- data/app/assets/javascripts/DynamicScene/DynamicConeVisualizerUsingCustomSensor.js +1 -1
- data/app/assets/javascripts/DynamicScene/DynamicLabel.js +12 -1
- data/app/assets/javascripts/DynamicScene/DynamicLabelVisualizer.js +5 -0
- data/app/assets/javascripts/DynamicScene/DynamicObject.js +44 -17
- data/app/assets/javascripts/DynamicScene/DynamicObjectView.js +3 -3
- data/app/assets/javascripts/DynamicScene/DynamicPoint.js +12 -1
- data/app/assets/javascripts/DynamicScene/DynamicPointVisualizer.js +11 -2
- data/app/assets/javascripts/DynamicScene/DynamicPolyline.js +10 -30
- data/app/assets/javascripts/DynamicScene/DynamicPolylineVisualizer.js +5 -20
- data/app/assets/javascripts/DynamicScene/GeoJsonDataSource.js +26 -8
- data/app/assets/javascripts/DynamicScene/GridMaterialProperty.js +2 -2
- data/app/assets/javascripts/DynamicScene/ImageMaterialProperty.js +2 -2
- data/app/assets/javascripts/DynamicScene/PolylineOutlineMaterialProperty.js +66 -0
- data/app/assets/javascripts/DynamicScene/PositionProperty.js +3 -3
- data/app/assets/javascripts/DynamicScene/ReferenceProperty.js +1 -1
- data/app/assets/javascripts/DynamicScene/SampledProperty.js +14 -8
- data/app/assets/javascripts/Renderer/AutomaticUniforms.js +4 -3
- data/app/assets/javascripts/Renderer/Context.js +16 -2
- data/app/assets/javascripts/Renderer/UniformState.js +14 -14
- data/app/assets/javascripts/Scene/Billboard.js +102 -26
- data/app/assets/javascripts/Scene/BillboardCollection.js +69 -16
- data/app/assets/javascripts/Scene/Camera.js +7 -7
- data/app/assets/javascripts/Scene/CameraController.js +23 -12
- data/app/assets/javascripts/Scene/CameraFlightPath.js +11 -11
- data/app/assets/javascripts/Scene/CentralBodySurface.js +1 -1
- data/app/assets/javascripts/Scene/CustomSensorVolume.js +17 -2
- data/app/assets/javascripts/Scene/EllipsoidPrimitive.js +79 -24
- data/app/assets/javascripts/Scene/ExtentPrimitive.js +17 -1
- data/app/assets/javascripts/Scene/Label.js +94 -18
- data/app/assets/javascripts/Scene/LabelCollection.js +6 -2
- data/app/assets/javascripts/Scene/Moon.js +150 -0
- data/app/assets/javascripts/Scene/Polygon.js +18 -1
- data/app/assets/javascripts/Scene/Polyline.js +32 -13
- data/app/assets/javascripts/Scene/PolylineCollection.js +7 -6
- data/app/assets/javascripts/Scene/Primitive.js +2 -2
- data/app/assets/javascripts/Scene/RectangularPyramidSensorVolume.js +12 -0
- data/app/assets/javascripts/Scene/Scene.js +122 -14
- data/app/assets/javascripts/Scene/SceneTransforms.js +2 -2
- data/app/assets/javascripts/Scene/SceneTransitioner.js +4 -4
- data/app/assets/javascripts/Scene/ScreenSpaceCameraController.js +1 -1
- data/app/assets/javascripts/Scene/SkyBox.js +53 -48
- data/app/assets/javascripts/Scene/TileMapServiceImageryProvider.js +2 -2
- data/app/assets/javascripts/Shaders/BillboardCollectionVS.glsl +36 -14
- data/app/assets/javascripts/Shaders/BillboardCollectionVS.js +27 -9
- data/app/assets/javascripts/Shaders/Builtin/Functions/phong.glsl +13 -0
- data/app/assets/javascripts/Shaders/Builtin/Functions/phong.js +10 -0
- data/app/assets/javascripts/Shaders/EllipsoidFS.glsl +24 -0
- data/app/assets/javascripts/Shaders/EllipsoidFS.js +21 -1
- data/app/assets/javascripts/Widgets/CesiumWidget/CesiumWidget.js +30 -9
- data/app/assets/javascripts/Widgets/HomeButton/HomeButtonViewModel.js +6 -5
- data/app/assets/javascripts/Widgets/Viewer/Viewer.js +13 -0
- data/app/assets/javascripts/Widgets/Viewer/viewerDynamicObjectMixin.js +46 -4
- data/app/assets/javascripts/Workers/cesiumWorkerBootstrapper.js +16 -8
- data/app/assets/javascripts/Workers/createPolylineVolumeGeometry.js +23 -0
- data/app/assets/javascripts/Workers/createPolylineVolumeOutlineGeometry.js +23 -0
- data/lib/cesium/version.rb +1 -1
- metadata +15 -5
- data/test/dummy/tmp/pids/server.pid +0 -1
|
@@ -2048,196 +2048,6 @@ define(['Core/Cartesian3', 'Core/Cartesian4', 'Core/defaultValue', 'Core/defined
|
|
|
2048
2048
|
return Matrix4.clone(this, result);
|
|
2049
2049
|
};
|
|
2050
2050
|
|
|
2051
|
-
/**
|
|
2052
|
-
* Computes an Array from this Matrix4 instance.
|
|
2053
|
-
* @memberof Matrix4
|
|
2054
|
-
*
|
|
2055
|
-
* @param {Array} [result] The Array onto which to store the result.
|
|
2056
|
-
* @returns {Array} The modified Array parameter or a new Array instance if one was not provided.
|
|
2057
|
-
*/
|
|
2058
|
-
Matrix4.prototype.toArray = function(result) {
|
|
2059
|
-
return Matrix4.toArray(this, result);
|
|
2060
|
-
};
|
|
2061
|
-
|
|
2062
|
-
/**
|
|
2063
|
-
* Retrieves a copy of the matrix column at the provided index as a Cartesian4 instance.
|
|
2064
|
-
* @memberof Matrix4
|
|
2065
|
-
*
|
|
2066
|
-
* @param {Number} index The zero-based index of the column to retrieve.
|
|
2067
|
-
* @param {Cartesian4} [result] The object onto which to store the result.
|
|
2068
|
-
* @returns {Cartesian4} The modified result parameter or a new Cartesian4 instance if one was not provided.
|
|
2069
|
-
*
|
|
2070
|
-
* @exception {DeveloperError} index is required and must be 0, 1, 2, or 3.
|
|
2071
|
-
*
|
|
2072
|
-
* @see Cartesian4
|
|
2073
|
-
*/
|
|
2074
|
-
Matrix4.prototype.getColumn = function(index, result) {
|
|
2075
|
-
return Matrix4.getColumn(this, index, result);
|
|
2076
|
-
};
|
|
2077
|
-
|
|
2078
|
-
/**
|
|
2079
|
-
* Computes a new matrix that replaces the specified column in this matrix with the provided Cartesian4 instance.
|
|
2080
|
-
* @memberof Matrix4
|
|
2081
|
-
*
|
|
2082
|
-
* @param {Number} index The zero-based index of the column to set.
|
|
2083
|
-
* @param {Cartesian4} cartesian The Cartesian whose values will be assigned to the specified column.
|
|
2084
|
-
*
|
|
2085
|
-
* @exception {DeveloperError} cartesian is required.
|
|
2086
|
-
* @exception {DeveloperError} index is required and must be 0, 1, 2, or 3.
|
|
2087
|
-
*
|
|
2088
|
-
* @see Cartesian4
|
|
2089
|
-
*/
|
|
2090
|
-
Matrix4.prototype.setColumn = function(index, cartesian, result) {
|
|
2091
|
-
return Matrix4.setColumn(this, index, cartesian, result);
|
|
2092
|
-
};
|
|
2093
|
-
|
|
2094
|
-
/**
|
|
2095
|
-
* Retrieves a copy of the matrix row at the provided index as a Cartesian4 instance.
|
|
2096
|
-
* @memberof Matrix4
|
|
2097
|
-
*
|
|
2098
|
-
* @param {Number} index The zero-based index of the row to retrieve.
|
|
2099
|
-
* @param {Cartesian4} [result] The object onto which to store the result.
|
|
2100
|
-
* @returns {Cartesian4} The modified result parameter or a new Cartesian4 instance if one was not provided.
|
|
2101
|
-
*
|
|
2102
|
-
* @exception {DeveloperError} index is required and must be 0, 1, 2, or 3.
|
|
2103
|
-
*
|
|
2104
|
-
* @see Cartesian4
|
|
2105
|
-
*/
|
|
2106
|
-
Matrix4.prototype.getRow = function(index, result) {
|
|
2107
|
-
return Matrix4.getRow(this, index, result);
|
|
2108
|
-
};
|
|
2109
|
-
|
|
2110
|
-
/**
|
|
2111
|
-
* Computes a new matrix that replaces the specified row in this matrix with the provided Cartesian4 instance.
|
|
2112
|
-
* @memberof Matrix4
|
|
2113
|
-
*
|
|
2114
|
-
* @param {Number} index The zero-based index of the row to set.
|
|
2115
|
-
* @param {Cartesian4} cartesian The Cartesian whose values will be assigned to the specified row.
|
|
2116
|
-
*
|
|
2117
|
-
* @exception {DeveloperError} cartesian is required.
|
|
2118
|
-
* @exception {DeveloperError} index is required and must be 0, 1, 2, or 3.
|
|
2119
|
-
*
|
|
2120
|
-
* @see Cartesian4
|
|
2121
|
-
*/
|
|
2122
|
-
Matrix4.prototype.setRow = function(index, cartesian, result) {
|
|
2123
|
-
return Matrix4.setRow(this, index, cartesian, result);
|
|
2124
|
-
};
|
|
2125
|
-
|
|
2126
|
-
/**
|
|
2127
|
-
* Computes the product of this matrix and the provided matrix.
|
|
2128
|
-
* @memberof Matrix4
|
|
2129
|
-
*
|
|
2130
|
-
* @param {Matrix4} right The right hand side matrix.
|
|
2131
|
-
* @param {Matrix4} [result] The object onto which to store the result.
|
|
2132
|
-
* @returns {Matrix4} The modified result parameter or a new Matrix4 instance if one was not provided.
|
|
2133
|
-
*
|
|
2134
|
-
* @exception {DeveloperError} right is required.
|
|
2135
|
-
*/
|
|
2136
|
-
Matrix4.prototype.multiply = function(right, result) {
|
|
2137
|
-
return Matrix4.multiply(this, right, result);
|
|
2138
|
-
};
|
|
2139
|
-
|
|
2140
|
-
/**
|
|
2141
|
-
* Multiplies this matrix, assuming it is a transformation matrix (with a bottom row of
|
|
2142
|
-
* <code>[0.0, 0.0, 0.0, 1.0]</code>), by an implicit translation matrix defined by a {@link Cartesian3}.
|
|
2143
|
-
*
|
|
2144
|
-
* @memberof Matrix4
|
|
2145
|
-
*
|
|
2146
|
-
* @param {Cartesian3} translation The translation on the right-hand side of the multiplication.
|
|
2147
|
-
* @param {Matrix4} [result] The object onto which to store the result.
|
|
2148
|
-
*
|
|
2149
|
-
* @returns {Matrix4} The modified result parameter or a new Matrix4 instance if one was not provided.
|
|
2150
|
-
*
|
|
2151
|
-
* @exception {DeveloperError} translation is required.
|
|
2152
|
-
*/
|
|
2153
|
-
Matrix4.prototype.multiplyByTranslation = function(translation, result) {
|
|
2154
|
-
return Matrix4.multiplyByTranslation(this, translation, result);
|
|
2155
|
-
};
|
|
2156
|
-
|
|
2157
|
-
/**
|
|
2158
|
-
* Multiplies this matrix, assuming it is a transformation matrix (with a bottom row of
|
|
2159
|
-
* <code>[0.0, 0.0, 0.0, 1.0]</code>), by an implicit uniform scale matrix.
|
|
2160
|
-
*
|
|
2161
|
-
* @memberof Matrix4
|
|
2162
|
-
*
|
|
2163
|
-
* @param {Number} scale The scale on the right-hand side of the multiplication.
|
|
2164
|
-
* @param {Matrix4} [result] The object onto which to store the result.
|
|
2165
|
-
*
|
|
2166
|
-
* @returns {Matrix4} The modified result parameter or a new Matrix4 instance if one was not provided.
|
|
2167
|
-
*
|
|
2168
|
-
* @exception {DeveloperError} scale is required.
|
|
2169
|
-
*/
|
|
2170
|
-
Matrix4.prototype.multiplyByUniformScale = function(scale, result) {
|
|
2171
|
-
return Matrix4.multiplyByUniformScale(this, scale, result);
|
|
2172
|
-
};
|
|
2173
|
-
|
|
2174
|
-
/**
|
|
2175
|
-
* Computes the product of this matrix and a column vector.
|
|
2176
|
-
* @memberof Matrix4
|
|
2177
|
-
*
|
|
2178
|
-
* @param {Cartesian4} cartesian The vector.
|
|
2179
|
-
* @param {Cartesian4} [result] The object onto which to store the result.
|
|
2180
|
-
* @returns {Cartesian4} The modified result parameter or a new Cartesian4 instance if one was not provided.
|
|
2181
|
-
*
|
|
2182
|
-
* @exception {DeveloperError} cartesian is required.
|
|
2183
|
-
*/
|
|
2184
|
-
Matrix4.prototype.multiplyByVector = function(cartesian, result) {
|
|
2185
|
-
return Matrix4.multiplyByVector(this, cartesian, result);
|
|
2186
|
-
};
|
|
2187
|
-
|
|
2188
|
-
/**
|
|
2189
|
-
* Computes the product of a matrix and a {@link Cartesian3}. This is equivalent to calling {@link Matrix4#multiplyByVector}
|
|
2190
|
-
* with a {@link Cartesian4} with a <code>w</code> component of one.
|
|
2191
|
-
* @memberof Matrix4
|
|
2192
|
-
*
|
|
2193
|
-
* @param {Cartesian3} cartesian The point.
|
|
2194
|
-
* @param {Cartesian4} [result] The object onto which to store the result.
|
|
2195
|
-
* @returns {Cartesian4} The modified result parameter or a new Cartesian4 instance if one was not provided.
|
|
2196
|
-
*
|
|
2197
|
-
* @exception {DeveloperError} cartesian is required.
|
|
2198
|
-
*/
|
|
2199
|
-
Matrix4.prototype.multiplyByPoint = function(cartesian, result) {
|
|
2200
|
-
return Matrix4.multiplyByPoint(this, cartesian, result);
|
|
2201
|
-
};
|
|
2202
|
-
|
|
2203
|
-
/**
|
|
2204
|
-
* Computes the product of this matrix and a scalar.
|
|
2205
|
-
* @memberof Matrix4
|
|
2206
|
-
*
|
|
2207
|
-
* @param {Number} scalar The number to multiply by.
|
|
2208
|
-
* @param {Matrix4} [result] The object onto which to store the result.
|
|
2209
|
-
* @returns {Matrix4} The modified result parameter or a new Cartesian4 instance if one was not provided.
|
|
2210
|
-
*
|
|
2211
|
-
* @exception {DeveloperError} scalar is required and must be a number.
|
|
2212
|
-
*/
|
|
2213
|
-
Matrix4.prototype.multiplyByScalar = function(scalar, result) {
|
|
2214
|
-
return Matrix4.multiplyByScalar(this, scalar, result);
|
|
2215
|
-
};
|
|
2216
|
-
/**
|
|
2217
|
-
* Computes a negated copy of this matrix.
|
|
2218
|
-
* @memberof Matrix4
|
|
2219
|
-
*
|
|
2220
|
-
* @param {Matrix4} matrix The matrix to negate.
|
|
2221
|
-
* @param {Matrix4} [result] The object onto which to store the result.
|
|
2222
|
-
* @returns {Matrix4} The modified result parameter or a new Matrix4 instance if one was not provided.
|
|
2223
|
-
*
|
|
2224
|
-
* @exception {DeveloperError} matrix is required.
|
|
2225
|
-
*/
|
|
2226
|
-
Matrix4.prototype.negate = function(result) {
|
|
2227
|
-
return Matrix4.negate(this, result);
|
|
2228
|
-
};
|
|
2229
|
-
|
|
2230
|
-
/**
|
|
2231
|
-
* Computes the transpose of this matrix.
|
|
2232
|
-
* @memberof Matrix4
|
|
2233
|
-
*
|
|
2234
|
-
* @param {Matrix4} [result] The object onto which to store the result.
|
|
2235
|
-
* @returns {Matrix4} The modified result parameter or a new Matrix4 instance if one was not provided.
|
|
2236
|
-
*/
|
|
2237
|
-
Matrix4.prototype.transpose = function(result) {
|
|
2238
|
-
return Matrix4.transpose(this, result);
|
|
2239
|
-
};
|
|
2240
|
-
|
|
2241
2051
|
/**
|
|
2242
2052
|
* Compares this matrix to the provided matrix componentwise and returns
|
|
2243
2053
|
* <code>true</code> if they are equal, <code>false</code> otherwise.
|
|
@@ -2280,64 +2090,5 @@ define(['Core/Cartesian3', 'Core/Cartesian4', 'Core/defaultValue', 'Core/defined
|
|
|
2280
2090
|
'(' + this[3] + ', ' + this[7] + ', ' + this[11] + ', ' + this[15] +')';
|
|
2281
2091
|
};
|
|
2282
2092
|
|
|
2283
|
-
/**
|
|
2284
|
-
* Gets the translation portion of this matrix, assuming the matrix is a affine transformation matrix.
|
|
2285
|
-
* @memberof Matrix4
|
|
2286
|
-
*
|
|
2287
|
-
* @param {Cartesian3} [result] The object onto which to store the result.
|
|
2288
|
-
* @returns {Cartesian3} The modified result parameter or a new Cartesian3 instance if one was not provided.
|
|
2289
|
-
*
|
|
2290
|
-
* @see Cartesian3
|
|
2291
|
-
*/
|
|
2292
|
-
Matrix4.prototype.getTranslation = function(result) {
|
|
2293
|
-
return Matrix4.getTranslation(this, result);
|
|
2294
|
-
};
|
|
2295
|
-
|
|
2296
|
-
/**
|
|
2297
|
-
* Gets the upper left 3x3 rotation matrix of this matrix, assuming the matrix is a affine transformation matrix.
|
|
2298
|
-
* @memberof Matrix4
|
|
2299
|
-
*
|
|
2300
|
-
* @param {Matrix3} [result] The object onto which to store the result.
|
|
2301
|
-
* @returns {Matrix3} The modified result parameter or a new Cartesian3 instance if one was not provided.
|
|
2302
|
-
*
|
|
2303
|
-
* @see Matrix3
|
|
2304
|
-
*/
|
|
2305
|
-
Matrix4.prototype.getRotation = function(result) {
|
|
2306
|
-
return Matrix4.getRotation(this, result);
|
|
2307
|
-
};
|
|
2308
|
-
|
|
2309
|
-
/**
|
|
2310
|
-
* Computes the inverse of this matrix using Cramers Rule.
|
|
2311
|
-
* If the determinant is zero, the matrix can not be inverted, and an exception is thrown.
|
|
2312
|
-
* If the matrix is an affine transformation matrix, it is more efficient
|
|
2313
|
-
* to invert it with {@link #inverseTransformation}.
|
|
2314
|
-
* @memberof Matrix4
|
|
2315
|
-
*
|
|
2316
|
-
* @param {Matrix4} [result] The object onto which to store the result.
|
|
2317
|
-
* @returns {Matrix4} The modified result parameter or a new Cartesian3 instance if one was not provided.
|
|
2318
|
-
*
|
|
2319
|
-
* @exception {RuntimeError} matrix is not invertible because its determinate is zero.
|
|
2320
|
-
*/
|
|
2321
|
-
Matrix4.prototype.inverse = function(result) {
|
|
2322
|
-
return Matrix4.inverse(this, result);
|
|
2323
|
-
};
|
|
2324
|
-
|
|
2325
|
-
/**
|
|
2326
|
-
* Computes the inverse of this matrix assuming it is
|
|
2327
|
-
* an affine transformation matrix, where the upper left 3x3 elements
|
|
2328
|
-
* are a rotation matrix, and the upper three elements in the fourth
|
|
2329
|
-
* column are the translation. The bottom row is assumed to be [0, 0, 0, 1].
|
|
2330
|
-
* The matrix is not verified to be in the proper form.
|
|
2331
|
-
* This method is faster than computing the inverse for a general 4x4
|
|
2332
|
-
* matrix using {@link #inverse}.
|
|
2333
|
-
* @memberof Matrix4
|
|
2334
|
-
*
|
|
2335
|
-
* @param {Matrix4} [result] The object onto which to store the result.
|
|
2336
|
-
* @returns {Matrix4} The modified result parameter or a new Cartesian3 instance if one was not provided.
|
|
2337
|
-
*/
|
|
2338
|
-
Matrix4.prototype.inverseTransformation = function(result) {
|
|
2339
|
-
return Matrix4.inverseTransformation(this, result);
|
|
2340
|
-
};
|
|
2341
|
-
|
|
2342
2093
|
return Matrix4;
|
|
2343
2094
|
});
|
|
@@ -161,5 +161,18 @@ define(['Core/defaultValue', 'Core/defined', 'Core/DeveloperError'], function(
|
|
|
161
161
|
return NearFarScalar.clone(this, result);
|
|
162
162
|
};
|
|
163
163
|
|
|
164
|
+
/**
|
|
165
|
+
* Compares this instance to the provided NearFarScalar and returns <code>true</code> if they are equal,
|
|
166
|
+
* <code>false</code> otherwise.
|
|
167
|
+
* @memberof NearFarScalar
|
|
168
|
+
*
|
|
169
|
+
* @param {NearFarScalar} [right] The right hand side NearFarScalar.
|
|
170
|
+
*
|
|
171
|
+
* @returns {Boolean} <code>true</code> if left and right are equal; otherwise <code>false</code>.
|
|
172
|
+
*/
|
|
173
|
+
NearFarScalar.prototype.equals = function(right) {
|
|
174
|
+
return NearFarScalar.equals(this, right);
|
|
175
|
+
};
|
|
176
|
+
|
|
164
177
|
return NearFarScalar;
|
|
165
178
|
});
|
|
@@ -690,7 +690,7 @@ define(['Core/defaultValue', 'Core/BoundingRectangle', 'Core/BoundingSphere', 'C
|
|
|
690
690
|
center = Cartesian3.add(center, scratchPosition, center);
|
|
691
691
|
|
|
692
692
|
if (extrude) {
|
|
693
|
-
scratchBoundingSphere =
|
|
693
|
+
scratchBoundingSphere = BoundingSphere.clone(boundingSphere, scratchBoundingSphere);
|
|
694
694
|
center = scratchBoundingSphere.center;
|
|
695
695
|
scratchPosition = Cartesian3.multiplyByScalar(scratchNormal, extrudedHeight, scratchPosition);
|
|
696
696
|
center = Cartesian3.add(ellipsoid.scaleToGeodeticSurface(center, center), scratchPosition, center);
|
|
@@ -387,7 +387,7 @@ define(['Core/defaultValue', 'Core/defined', 'Core/BoundingSphere', 'Core/Cartes
|
|
|
387
387
|
center = Cartesian3.add(center, scratchPosition, center);
|
|
388
388
|
|
|
389
389
|
if (extrude) {
|
|
390
|
-
scratchBoundingSphere =
|
|
390
|
+
scratchBoundingSphere = BoundingSphere.clone(boundingSphere, scratchBoundingSphere);
|
|
391
391
|
center = scratchBoundingSphere.center;
|
|
392
392
|
scratchPosition = Cartesian3.multiplyByScalar(scratchNormal, extrudedHeight, scratchPosition);
|
|
393
393
|
center = Cartesian3.add(center, scratchPosition, center);
|
|
@@ -403,4 +403,4 @@ define(['Core/defaultValue', 'Core/defined', 'Core/BoundingSphere', 'Core/Cartes
|
|
|
403
403
|
};
|
|
404
404
|
|
|
405
405
|
return PolygonOutlineGeometry;
|
|
406
|
-
});
|
|
406
|
+
});
|
|
@@ -371,7 +371,7 @@ define(['Core/DeveloperError', 'Core/Math', 'Core/Cartesian2', 'Core/Cartesian3'
|
|
|
371
371
|
var after = getNextVertex(a1i, pArray, AFTER);
|
|
372
372
|
|
|
373
373
|
var s1 = Cartesian2.subtract(pArray[before].position, a1.position);
|
|
374
|
-
var s2 = Cartesian2.subtract(pArray[after].position,
|
|
374
|
+
var s2 = Cartesian2.subtract(pArray[after].position, a1.position);
|
|
375
375
|
var cut = Cartesian2.subtract(a2.position, a1.position);
|
|
376
376
|
|
|
377
377
|
// Convert to 3-dimensional so we can use cross product
|
|
@@ -499,7 +499,7 @@ define(['Core/DeveloperError', 'Core/Math', 'Core/Cartesian2', 'Core/Cartesian3'
|
|
|
499
499
|
}
|
|
500
500
|
|
|
501
501
|
var s1 = Cartesian2.subtract(pArray[before].position, pArray[index].position);
|
|
502
|
-
var s2 = Cartesian2.subtract(pArray[after].position,
|
|
502
|
+
var s2 = Cartesian2.subtract(pArray[after].position, pArray[index].position);
|
|
503
503
|
|
|
504
504
|
// Convert to 3-dimensional so we can use cross product
|
|
505
505
|
s1 = new Cartesian3(s1.x, s1.y, 0.0);
|
|
@@ -33,16 +33,20 @@ define(['Core/defaultValue', 'Core/defined', 'Core/DeveloperError', 'Core/Cartog
|
|
|
33
33
|
var carto1 = new Cartographic();
|
|
34
34
|
var carto2 = new Cartographic();
|
|
35
35
|
var cartesian = new Cartesian3();
|
|
36
|
+
var scaleFirst = new Cartesian3();
|
|
37
|
+
var scaleLast = new Cartesian3();
|
|
36
38
|
var ellipsoidGeodesic = new EllipsoidGeodesic();
|
|
37
39
|
//Returns subdivided line scaled to ellipsoid surface starting at p1 and ending at p2.
|
|
38
40
|
//Result includes p1, but not include p2. This function is called for a sequence of line segments,
|
|
39
41
|
//and this prevents duplication of end point.
|
|
40
42
|
function generateCartesianArc(p1, p2, granularity, ellipsoid) {
|
|
41
|
-
var
|
|
43
|
+
var first = ellipsoid.scaleToGeodeticSurface(p1, scaleFirst);
|
|
44
|
+
var last = ellipsoid.scaleToGeodeticSurface(p2, scaleLast);
|
|
45
|
+
var separationAngle = Cartesian3.angleBetween(first, last);
|
|
42
46
|
var numPoints = Math.ceil(separationAngle/granularity);
|
|
43
47
|
var result = new Array(numPoints*3);
|
|
44
|
-
var start = ellipsoid.cartesianToCartographic(
|
|
45
|
-
var end = ellipsoid.cartesianToCartographic(
|
|
48
|
+
var start = ellipsoid.cartesianToCartographic(first, carto1);
|
|
49
|
+
var end = ellipsoid.cartesianToCartographic(last, carto2);
|
|
46
50
|
|
|
47
51
|
ellipsoidGeodesic.setEndPoints(start, end);
|
|
48
52
|
var surfaceDistanceBetweenPoints = ellipsoidGeodesic.getSurfaceDistance() / (numPoints);
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
/*global define*/
|
|
2
|
+
define(['Core/defined', 'Core/DeveloperError', 'Core/Cartesian3', 'Core/CornerType', 'Core/ComponentDatatype', 'Core/Ellipsoid', 'Core/Geometry', 'Core/GeometryPipeline', 'Core/IndexDatatype', 'Core/Math', 'Core/PolygonPipeline', 'Core/PolylineVolumeGeometryLibrary', 'Core/PrimitiveType', 'Core/defaultValue', 'Core/BoundingSphere', 'Core/BoundingRectangle', 'Core/GeometryAttribute', 'Core/GeometryAttributes', 'Core/VertexFormat', 'Core/WindingOrder'], function(
|
|
3
|
+
defined,
|
|
4
|
+
DeveloperError,
|
|
5
|
+
Cartesian3,
|
|
6
|
+
CornerType,
|
|
7
|
+
ComponentDatatype,
|
|
8
|
+
Ellipsoid,
|
|
9
|
+
Geometry,
|
|
10
|
+
GeometryPipeline,
|
|
11
|
+
IndexDatatype,
|
|
12
|
+
CesiumMath,
|
|
13
|
+
PolygonPipeline,
|
|
14
|
+
PolylineVolumeGeometryLibrary,
|
|
15
|
+
PrimitiveType,
|
|
16
|
+
defaultValue,
|
|
17
|
+
BoundingSphere,
|
|
18
|
+
BoundingRectangle,
|
|
19
|
+
GeometryAttribute,
|
|
20
|
+
GeometryAttributes,
|
|
21
|
+
VertexFormat,
|
|
22
|
+
WindingOrder) {
|
|
23
|
+
"use strict";
|
|
24
|
+
|
|
25
|
+
function computeAttributes(combinedPositions, shape, boundingRectangle, vertexFormat, ellipsoid) {
|
|
26
|
+
var attributes = new GeometryAttributes();
|
|
27
|
+
if (vertexFormat.position) {
|
|
28
|
+
attributes.position = new GeometryAttribute({
|
|
29
|
+
componentDatatype : ComponentDatatype.DOUBLE,
|
|
30
|
+
componentsPerAttribute : 3,
|
|
31
|
+
values : combinedPositions
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
var shapeLength = shape.length;
|
|
35
|
+
var vertexCount = combinedPositions.length / 3;
|
|
36
|
+
var length = (vertexCount - shapeLength * 2) / (shapeLength * 2);
|
|
37
|
+
var firstEndIndices = PolygonPipeline.triangulate(shape);
|
|
38
|
+
|
|
39
|
+
var indicesCount = (length - 1) * (shapeLength) * 6 + firstEndIndices.length * 2;
|
|
40
|
+
var indices = IndexDatatype.createTypedArray(vertexCount, indicesCount);
|
|
41
|
+
var i, j;
|
|
42
|
+
var ll, ul, ur, lr;
|
|
43
|
+
var offset = shapeLength * 2;
|
|
44
|
+
var index = 0;
|
|
45
|
+
for (i = 0; i < length - 1; i++) {
|
|
46
|
+
for (j = 0; j < shapeLength - 1; j++) {
|
|
47
|
+
ll = j * 2 + i * shapeLength * 2;
|
|
48
|
+
lr = ll + offset;
|
|
49
|
+
ul = ll + 1;
|
|
50
|
+
ur = ul + offset;
|
|
51
|
+
|
|
52
|
+
indices[index++] = ul;
|
|
53
|
+
indices[index++] = ll;
|
|
54
|
+
indices[index++] = ur;
|
|
55
|
+
indices[index++] = ur;
|
|
56
|
+
indices[index++] = ll;
|
|
57
|
+
indices[index++] = lr;
|
|
58
|
+
}
|
|
59
|
+
ll = shapeLength * 2 - 2 + i * shapeLength * 2;
|
|
60
|
+
ul = ll + 1;
|
|
61
|
+
ur = ul + offset;
|
|
62
|
+
lr = ll + offset;
|
|
63
|
+
|
|
64
|
+
indices[index++] = ul;
|
|
65
|
+
indices[index++] = ll;
|
|
66
|
+
indices[index++] = ur;
|
|
67
|
+
indices[index++] = ur;
|
|
68
|
+
indices[index++] = ll;
|
|
69
|
+
indices[index++] = lr;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
if (vertexFormat.st || vertexFormat.tangent || vertexFormat.binormal) { // st required for tangent/binormal calculation
|
|
73
|
+
var st = new Float32Array(vertexCount * 2);
|
|
74
|
+
var lengthSt = 1 / (length - 1);
|
|
75
|
+
var heightSt = 1 / (boundingRectangle.height);
|
|
76
|
+
var heightOffset = boundingRectangle.height / 2;
|
|
77
|
+
var s, t;
|
|
78
|
+
var stindex = 0;
|
|
79
|
+
for (i = 0; i < length; i++) {
|
|
80
|
+
s = i * lengthSt;
|
|
81
|
+
t = heightSt * (shape[0].y + heightOffset);
|
|
82
|
+
st[stindex++] = s;
|
|
83
|
+
st[stindex++] = t;
|
|
84
|
+
for (j = 1; j < shapeLength; j++) {
|
|
85
|
+
t = heightSt * (shape[j].y + heightOffset);
|
|
86
|
+
st[stindex++] = s;
|
|
87
|
+
st[stindex++] = t;
|
|
88
|
+
st[stindex++] = s;
|
|
89
|
+
st[stindex++] = t;
|
|
90
|
+
}
|
|
91
|
+
t = heightSt * (shape[0].y + heightOffset);
|
|
92
|
+
st[stindex++] = s;
|
|
93
|
+
st[stindex++] = t;
|
|
94
|
+
}
|
|
95
|
+
for (j = 0; j < shapeLength; j++) {
|
|
96
|
+
s = 0;
|
|
97
|
+
t = heightSt * (shape[j].y + heightOffset);
|
|
98
|
+
st[stindex++] = s;
|
|
99
|
+
st[stindex++] = t;
|
|
100
|
+
}
|
|
101
|
+
for (j = 0; j < shapeLength; j++) {
|
|
102
|
+
s = (length - 1) * lengthSt;
|
|
103
|
+
t = heightSt * (shape[j].y + heightOffset);
|
|
104
|
+
st[stindex++] = s;
|
|
105
|
+
st[stindex++] = t;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
attributes.st = new GeometryAttribute({
|
|
109
|
+
componentDatatype : ComponentDatatype.FLOAT,
|
|
110
|
+
componentsPerAttribute : 2,
|
|
111
|
+
values : new Float32Array(st)
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
var endOffset = vertexCount - shapeLength * 2;
|
|
116
|
+
for (i = 0; i < firstEndIndices.length; i += 3) {
|
|
117
|
+
var v0 = firstEndIndices[i] + endOffset;
|
|
118
|
+
var v1 = firstEndIndices[i + 1] + endOffset;
|
|
119
|
+
var v2 = firstEndIndices[i + 2] + endOffset;
|
|
120
|
+
|
|
121
|
+
indices[index++] = v0;
|
|
122
|
+
indices[index++] = v1;
|
|
123
|
+
indices[index++] = v2;
|
|
124
|
+
indices[index++] = v2 + shapeLength;
|
|
125
|
+
indices[index++] = v1 + shapeLength;
|
|
126
|
+
indices[index++] = v0 + shapeLength;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
var geometry = new Geometry({
|
|
130
|
+
attributes : attributes,
|
|
131
|
+
indices : indices,
|
|
132
|
+
boundingSphere : BoundingSphere.fromVertices(combinedPositions),
|
|
133
|
+
primitiveType : PrimitiveType.TRIANGLES
|
|
134
|
+
});
|
|
135
|
+
|
|
136
|
+
if (vertexFormat.normal) {
|
|
137
|
+
geometry = GeometryPipeline.computeNormal(geometry);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
if (vertexFormat.tangent || vertexFormat.binormal) {
|
|
141
|
+
geometry = GeometryPipeline.computeBinormalAndTangent(geometry);
|
|
142
|
+
if (!vertexFormat.tangent) {
|
|
143
|
+
geometry.attributes.tangent = undefined;
|
|
144
|
+
}
|
|
145
|
+
if (!vertexFormat.binormal) {
|
|
146
|
+
geometry.attributes.binormal = undefined;
|
|
147
|
+
}
|
|
148
|
+
if (!vertexFormat.st) {
|
|
149
|
+
geometry.attributes.st = undefined;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
return geometry;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* A description of a polyline with a volume (a 2D shape extruded along a polyline).
|
|
158
|
+
*
|
|
159
|
+
* @alias PolylineVolumeGeometry
|
|
160
|
+
* @constructor
|
|
161
|
+
*
|
|
162
|
+
* @param {Array} options.polylinePositions An array of {@link Cartesain3} positions that define the center of the polyline volume.
|
|
163
|
+
* @param {Number} options.shapePositions An array of {@link Cartesian2} positions that define the shape to be extruded along the polyline
|
|
164
|
+
* @param {Ellipsoid} [options.ellipsoid=Ellipsoid.WGS84] The ellipsoid to be used as a reference.
|
|
165
|
+
* @param {Number} [options.granularity=CesiumMath.RADIANS_PER_DEGREE] The distance, in radians, between each latitude and longitude. Determines the number of positions in the buffer.
|
|
166
|
+
* @param {Number} [options.height=0] The distance between the ellipsoid surface and the positions.
|
|
167
|
+
* @param {VertexFormat} [options.vertexFormat=VertexFormat.DEFAULT] The vertex attributes to be computed.
|
|
168
|
+
* @param {Boolean} [options.cornerType = CornerType.ROUNDED] Determines the style of the corners.
|
|
169
|
+
*
|
|
170
|
+
* @exception {DeveloperError} options.polylinePositions is required.
|
|
171
|
+
* @exception {DeveloperError} options.shapePositions is required.
|
|
172
|
+
*
|
|
173
|
+
* @see PolylineVolumeGeometry#createGeometry
|
|
174
|
+
*
|
|
175
|
+
* @example
|
|
176
|
+
* var volume = new PolylineVolumeGeometry({
|
|
177
|
+
* vertexFormat : VertexFormat.POSITION_ONLY,
|
|
178
|
+
* polylinePositions : ellipsoid.cartographicArrayToCartesianArray([
|
|
179
|
+
* Cartographic.fromDegrees(-72.0, 40.0),
|
|
180
|
+
* Cartographic.fromDegrees(-70.0, 35.0)
|
|
181
|
+
* ]),
|
|
182
|
+
* shapePositions : Shapes.compute2DCircle(100000.0)
|
|
183
|
+
* });
|
|
184
|
+
*/
|
|
185
|
+
var PolylineVolumeGeometry = function(options) {
|
|
186
|
+
options = defaultValue(options, defaultValue.EMPTY_OBJECT);
|
|
187
|
+
var positions = options.polylinePositions;
|
|
188
|
+
if (!defined(positions)) {
|
|
189
|
+
throw new DeveloperError('options.polylinePositions is required.');
|
|
190
|
+
}
|
|
191
|
+
var shape = options.shapePositions;
|
|
192
|
+
if (!defined(shape)) {
|
|
193
|
+
throw new DeveloperError('options.shapePositions is required.');
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
this._positions = positions;
|
|
197
|
+
this._shape = shape;
|
|
198
|
+
this._ellipsoid = defaultValue(options.ellipsoid, Ellipsoid.WGS84);
|
|
199
|
+
this._height = defaultValue(options.height, 0.0);
|
|
200
|
+
this._cornerType = defaultValue(options.cornerType, CornerType.ROUNDED);
|
|
201
|
+
this._vertexFormat = defaultValue(options.vertexFormat, VertexFormat.DEFAULT);
|
|
202
|
+
this._granularity = defaultValue(options.granularity, CesiumMath.RADIANS_PER_DEGREE);
|
|
203
|
+
this._workerName = 'createPolylineVolumeGeometry';
|
|
204
|
+
};
|
|
205
|
+
|
|
206
|
+
/**
|
|
207
|
+
* Computes the geometric representation of a polyline with a volume, including its vertices, indices, and a bounding sphere.
|
|
208
|
+
* @memberof PolylineVolumeGeometry
|
|
209
|
+
*
|
|
210
|
+
* @param {PolylineVolumeGeometry} polylineVolumeGeometry A description of the polyline volume.
|
|
211
|
+
*
|
|
212
|
+
* @returns {Geometry} The computed vertices and indices.
|
|
213
|
+
*
|
|
214
|
+
* @exception {DeveloperError} Count of unique polyline positions must be greater than 1.
|
|
215
|
+
* @exception {DeveloperError} Count of unique shape positions must be at least 3.
|
|
216
|
+
*/
|
|
217
|
+
var brScratch = new BoundingRectangle();
|
|
218
|
+
PolylineVolumeGeometry.createGeometry = function(polylineVolumeGeometry) {
|
|
219
|
+
var positions = polylineVolumeGeometry._positions;
|
|
220
|
+
var cleanPositions = PolylineVolumeGeometryLibrary.removeDuplicatesFromPositions(positions, polylineVolumeGeometry._ellipsoid);
|
|
221
|
+
if (cleanPositions.length < 2) {
|
|
222
|
+
throw new DeveloperError('Count of unique polyline positions must be greater than 1.');
|
|
223
|
+
}
|
|
224
|
+
var shape2D = polylineVolumeGeometry._shape;
|
|
225
|
+
shape2D = PolylineVolumeGeometryLibrary.removeDuplicatesFromShape(shape2D);
|
|
226
|
+
if (shape2D.length < 3) {
|
|
227
|
+
throw new DeveloperError('Count of unique shape positions must be at least 3.');
|
|
228
|
+
}
|
|
229
|
+
if (PolygonPipeline.computeWindingOrder2D(shape2D).value === WindingOrder.CLOCKWISE.value) {
|
|
230
|
+
shape2D.reverse();
|
|
231
|
+
}
|
|
232
|
+
var boundingRectangle = BoundingRectangle.fromPoints(shape2D, brScratch);
|
|
233
|
+
|
|
234
|
+
var computedPositions = PolylineVolumeGeometryLibrary.computePositions(cleanPositions, shape2D, boundingRectangle, polylineVolumeGeometry, true);
|
|
235
|
+
return computeAttributes(computedPositions, shape2D, boundingRectangle, polylineVolumeGeometry._vertexFormat, polylineVolumeGeometry._ellipsoid);
|
|
236
|
+
};
|
|
237
|
+
|
|
238
|
+
return PolylineVolumeGeometry;
|
|
239
|
+
});
|