You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
125 lines
5.3 KiB
JavaScript
125 lines
5.3 KiB
JavaScript
import DeveloperError from "./DeveloperError.js";
|
|
|
|
/**
|
|
* Terrain data for a single tile. This type describes an
|
|
* interface and is not intended to be instantiated directly.
|
|
*
|
|
* @alias TerrainData
|
|
* @constructor
|
|
*
|
|
* @see HeightmapTerrainData
|
|
* @see QuantizedMeshTerrainData
|
|
* @see GoogleEarthEnterpriseTerrainData
|
|
*/
|
|
function TerrainData() {
|
|
DeveloperError.throwInstantiationError();
|
|
}
|
|
|
|
Object.defineProperties(TerrainData.prototype, {
|
|
/**
|
|
* An array of credits for this tile.
|
|
* @memberof TerrainData.prototype
|
|
* @type {Credit[]}
|
|
*/
|
|
credits: {
|
|
get: DeveloperError.throwInstantiationError,
|
|
},
|
|
/**
|
|
* The water mask included in this terrain data, if any. A water mask is a rectangular
|
|
* Uint8Array or image where a value of 255 indicates water and a value of 0 indicates land.
|
|
* Values in between 0 and 255 are allowed as well to smoothly blend between land and water.
|
|
* @memberof TerrainData.prototype
|
|
* @type {Uint8Array|HTMLImageElement|HTMLCanvasElement}
|
|
*/
|
|
waterMask: {
|
|
get: DeveloperError.throwInstantiationError,
|
|
},
|
|
});
|
|
|
|
/**
|
|
* Computes the terrain height at a specified longitude and latitude.
|
|
* @function
|
|
*
|
|
* @param {Rectangle} rectangle The rectangle covered by this terrain data.
|
|
* @param {Number} longitude The longitude in radians.
|
|
* @param {Number} latitude The latitude in radians.
|
|
* @returns {Number} The terrain height at the specified position. If the position
|
|
* is outside the rectangle, this method will extrapolate the height, which is likely to be wildly
|
|
* incorrect for positions far outside the rectangle.
|
|
*/
|
|
TerrainData.prototype.interpolateHeight =
|
|
DeveloperError.throwInstantiationError;
|
|
|
|
/**
|
|
* Determines if a given child tile is available, based on the
|
|
* {@link TerrainData#childTileMask}. The given child tile coordinates are assumed
|
|
* to be one of the four children of this tile. If non-child tile coordinates are
|
|
* given, the availability of the southeast child tile is returned.
|
|
* @function
|
|
*
|
|
* @param {Number} thisX The tile X coordinate of this (the parent) tile.
|
|
* @param {Number} thisY The tile Y coordinate of this (the parent) tile.
|
|
* @param {Number} childX The tile X coordinate of the child tile to check for availability.
|
|
* @param {Number} childY The tile Y coordinate of the child tile to check for availability.
|
|
* @returns {Boolean} True if the child tile is available; otherwise, false.
|
|
*/
|
|
TerrainData.prototype.isChildAvailable = DeveloperError.throwInstantiationError;
|
|
|
|
/**
|
|
* Creates a {@link TerrainMesh} from this terrain data.
|
|
* @function
|
|
*
|
|
* @private
|
|
*
|
|
* @param {Object} options Object with the following properties:
|
|
* @param {TilingScheme} options.tilingScheme The tiling scheme to which this tile belongs.
|
|
* @param {Number} options.x The X coordinate of the tile for which to create the terrain data.
|
|
* @param {Number} options.y The Y coordinate of the tile for which to create the terrain data.
|
|
* @param {Number} options.level The level of the tile for which to create the terrain data.
|
|
* @param {Number} [options.exaggeration=1.0] The scale used to exaggerate the terrain.
|
|
* @param {Boolean} [options.throttle=true] If true, indicates that this operation will need to be retried if too many asynchronous mesh creations are already in progress.
|
|
* @returns {Promise.<TerrainMesh>|undefined} A promise for the terrain mesh, or undefined if too many
|
|
* asynchronous mesh creations are already in progress and the operation should
|
|
* be retried later.
|
|
*/
|
|
TerrainData.prototype.createMesh = DeveloperError.throwInstantiationError;
|
|
|
|
/**
|
|
* Upsamples this terrain data for use by a descendant tile.
|
|
* @function
|
|
*
|
|
* @param {TilingScheme} tilingScheme The tiling scheme of this terrain data.
|
|
* @param {Number} thisX The X coordinate of this tile in the tiling scheme.
|
|
* @param {Number} thisY The Y coordinate of this tile in the tiling scheme.
|
|
* @param {Number} thisLevel The level of this tile in the tiling scheme.
|
|
* @param {Number} descendantX The X coordinate within the tiling scheme of the descendant tile for which we are upsampling.
|
|
* @param {Number} descendantY The Y coordinate within the tiling scheme of the descendant tile for which we are upsampling.
|
|
* @param {Number} descendantLevel The level within the tiling scheme of the descendant tile for which we are upsampling.
|
|
* @returns {Promise.<TerrainData>|undefined} A promise for upsampled terrain data for the descendant tile,
|
|
* or undefined if too many asynchronous upsample operations are in progress and the request has been
|
|
* deferred.
|
|
*/
|
|
TerrainData.prototype.upsample = DeveloperError.throwInstantiationError;
|
|
|
|
/**
|
|
* Gets a value indicating whether or not this terrain data was created by upsampling lower resolution
|
|
* terrain data. If this value is false, the data was obtained from some other source, such
|
|
* as by downloading it from a remote server. This method should return true for instances
|
|
* returned from a call to {@link TerrainData#upsample}.
|
|
* @function
|
|
*
|
|
* @returns {Boolean} True if this instance was created by upsampling; otherwise, false.
|
|
*/
|
|
TerrainData.prototype.wasCreatedByUpsampling =
|
|
DeveloperError.throwInstantiationError;
|
|
|
|
/**
|
|
* The maximum number of asynchronous tasks used for terrain processing.
|
|
*
|
|
* @type {Number}
|
|
* @private
|
|
*/
|
|
TerrainData.maximumAsynchronousTasks = 5;
|
|
|
|
export default TerrainData;
|