1 /**
  2  * Abstract; not implemented. There is no explicit constructor; this class
  3  * merely serves to document the representation used by {@link pv.Geo.scale}.
  4  *
  5  * @class Represents a geographic projection. This class provides the core
  6  * implementation for {@link pv.Geo.scale}s, mapping between geographic
  7  * coordinates (latitude and longitude) and normalized screen space in the range
  8  * [-1,1]. The remaining mapping between normalized screen space and actual
  9  * pixels is performed by <tt>pv.Geo.scale</tt>.
 10  *
 11  * <p>Many geographic projections have a point around which the projection is
 12  * centered. Rather than have each implementation add support for a
 13  * user-specified center point, the <tt>pv.Geo.scale</tt> translates the
 14  * geographic coordinates relative to the center point for both the forward and
 15  * inverse projection.
 16  *
 17  * <p>In general, this class should not be used directly, unless the desire is
 18  * to implement a new geographic projection. Instead, use <tt>pv.Geo.scale</tt>.
 19  * Implementations are not required to implement inverse projections, but are
 20  * needed for some forms of interactivity. Also note that some inverse
 21  * projections are ambiguous, such as the connecting points in Dymaxian maps.
 22  *
 23  * @name pv.Geo.Projection
 24  * @see pv.Geo.scale
 25  */
 26 
 27 /**
 28  * The <i>forward</i> projection.
 29  *
 30  * @function
 31  * @name pv.Geo.Projection.prototype.project
 32  * @param {pv.Geo.LatLng} latlng the latitude and longitude to project.
 33  * @returns {pv.Vector} the xy-coordinates of the given point.
 34  */
 35 
 36 /**
 37  * The <i>inverse</i> projection; optional.
 38  *
 39  * @function
 40  * @name pv.Geo.Projection.prototype.invert
 41  * @param {pv.Vector} xy the x- and y-coordinates to invert.
 42  * @returns {pv.Geo.LatLng} the latitude and longitude of the given point.
 43  */
 44