text: var defineProperties=require('./defineProperties');
  var DeveloperError=require('./DeveloperError');
  
      'use strict';
  
      /**
       * Defines how geodetic ellipsoid coordinates ({@link Cartographic}) project to a
       * flat map like Cesium's 2D and Columbus View modes.
       *
       * @alias MapProjection
       * @constructor
       *
       * @see GeographicProjection
       * @see WebMercatorProjection
       */
      function MapProjection() {
          DeveloperError.throwInstantiationError();
      }
  
      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;
  
      module.exports= MapProjection;
  