cesium
Version:
CesiumJS is a JavaScript library for creating 3D globes and 2D maps in a web browser without a plugin.
50 lines (44 loc) • 1.26 kB
JavaScript
import Cartesian3 from "./Cartesian3.js";
/**
* @private
*/
const TerrainExaggeration = {};
/**
* Scales a height relative to an offset.
*
* @param {Number} height The height.
* @param {Number} scale A scalar used to exaggerate the terrain. If the value is 1.0 there will be no effect.
* @param {Number} relativeHeight The height relative to which terrain is exaggerated. If the value is 0.0 terrain will be exaggerated relative to the ellipsoid surface.
*/
TerrainExaggeration.getHeight = function (height, scale, relativeHeight) {
return (height - relativeHeight) * scale + relativeHeight;
};
const scratchCartographic = new Cartesian3();
/**
* Scales a position by exaggeration.
*/
TerrainExaggeration.getPosition = function (
position,
ellipsoid,
terrainExaggeration,
terrainExaggerationRelativeHeight,
result
) {
const cartographic = ellipsoid.cartesianToCartographic(
position,
scratchCartographic
);
const newHeight = TerrainExaggeration.getHeight(
cartographic.height,
terrainExaggeration,
terrainExaggerationRelativeHeight
);
return Cartesian3.fromRadians(
cartographic.longitude,
cartographic.latitude,
newHeight,
ellipsoid,
result
);
};
export default TerrainExaggeration;