import DeveloperError from "./DeveloperError.js"; /** * Defines how geodetic ellipsoid coordinates ({@link Cartographic}) project to a * flat map like Cesium's 2D and Columbus View modes. * * @alias MapProjection * @constructor * @abstract * * @see GeographicProjection * @see WebMercatorProjection */ function MapProjection() { DeveloperError.throwInstantiationError(); } Object.defineProperties(MapProjection.prototype, { /** * Gets the {@link Ellipsoid}. * * @memberof MapProjection.prototype * * @type {Ellipsoid} * @readonly */ ellipsoid: { get: DeveloperError.throwInstantiationError, }, }); /** * Projects {@link Cartographic} coordinates, in radians, to projection-specific map coordinates, in meters. * * @memberof MapProjection * @function * * @param {Cartographic} cartographic The coordinates to project. * @param {Cartesian3} [result] An instance into which to copy the result. If this parameter is * undefined, a new instance is created and returned. * @returns {Cartesian3} The projected coordinates. If the result parameter is not undefined, the * coordinates are copied there and that instance is returned. Otherwise, a new instance is * created and returned. */ MapProjection.prototype.project = DeveloperError.throwInstantiationError; /** * Unprojects projection-specific map {@link Cartesian3} coordinates, in meters, to {@link Cartographic} * coordinates, in radians. * * @memberof MapProjection * @function * * @param {Cartesian3} cartesian The Cartesian position to unproject with height (z) in meters. * @param {Cartographic} [result] An instance into which to copy the result. If this parameter is * undefined, a new instance is created and returned. * @returns {Cartographic} The unprojected coordinates. If the result parameter is not undefined, the * coordinates are copied there and that instance is returned. Otherwise, a new instance is * created and returned. */ MapProjection.prototype.unproject = DeveloperError.throwInstantiationError; export default MapProjection;