/* * GeoTools - The Open Source Java GIS Toolkit * http://geotools.org * * (C) 2011, Open Source Geospatial Foundation (OSGeo) * (C) 2003-2005, Open Geospatial Consortium Inc. * * All Rights Reserved. http://www.opengis.org/legal/ */ package org.opengis.geometry.coordinate; import org.opengis.annotation.UML; import static org.opengis.annotation.Specification.*; /** * A {@linkplain GriddedSurface gridded surface} given as a family of circles whose positions vary * linearly along the axis of the sphere, and whose radius varies in proportion to the cosine function * of the central angle. The horizontal circles resemble lines of constant latitude, and the vertical * arcs resemble lines of constant longitude. If the {@linkplain #getControlPoints control points} * are sorted in terms of increasing longitude, and increasing latitude, the * {@linkplain #getUpNormal upNormal} of a sphere is the outward normal. * <p> * <strong>Example:</strong> If we take a gridded set of latitudes and longitudes in degrees, * (<var>u</var>, <var>v</var>), such as * * <blockquote><pre> * (-90, -180) (-90, -90) (-90, 0) (-90, 90) (-90, 180) * (-45, -180) (-45, -90) (-45, 0) (-45, 90) (-45, 180) * ( 0, -180) ( 0, -90) ( 0, 0) ( 0, 90) ( 0, 180) * ( 45, -180) ( 45, -90) ( 45, 0) (45, -90) ( 45, 180) * ( 90, -180) ( 90, -90) ( 90, 0) (90, -90) ( 90, 180) * </blockquote></pre> * * and map these points to 3D using the usual equations * (where <var>R</var> is the radius of the required sphere) * * <blockquote> * <var>z</var> = <var>R</var> sin(<var>u</var>) * <var>x</var> = <var>R</var> cos(<var>u</var>) sin(<var>v</var>) * <var>y</var> = <var>R</var> cos(<var>u</var>) cos(<var>v</var>) * </blockquote> * * we have a sphere of radius <var>R</var>, centered at (0, 0), as a gridded surface. Notice * that the entire first row and the entire last row of the control points map to a single point * each in 3D Euclidean space, North and South poles respectively, and that each horizontal curve * closes back on it self forming a geometric cycle. This gives us a metrically bounded (of finite * size), topologically unbounded (not having a boundary, a cycle) surface. * * * @source $URL: http://svn.osgeo.org/geotools/trunk/modules/library/opengis/src/main/java/org/opengis/geometry/coordinate/Sphere.java $ * @version <A HREF="http://www.opengeospatial.org/standards/as">ISO 19107</A> * @author Martin Desruisseaux (IRD) * @since GeoAPI 2.0 */ @UML(identifier="GM_Sphere", specification=ISO_19107) public interface Sphere extends GriddedSurface { }