org.opengis.geometry.coordinate.AffinePlacement Maven / Gradle / Ivy
Show all versions of gt-opengis Show documentation
/*
* 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 static org.opengis.annotation.Obligation.*;
import static org.opengis.annotation.Specification.*;
import org.opengis.annotation.UML;
/**
* A placement defined by linear transformation from the parameter space to the target coordinate
* space. In 2-dimensional Cartesian parameter space, (u, v), transforms into
* a 3-dimensional coordinate reference system, (x, y, z), by using
* an affine transformation, (u, v) → (x, y,
* z), which is defined:
*
* (TODO: paste the matrix here)
*
* Then, given this equation, the {@link #getLocation} method returns the direct position
* (x0, y0, z0), which is the
* target position of the origin in (u, v). The two {@linkplain
* #getReferenceDirection reference directions} (ux, uy,
* uz) and (vx, vy,
* vz) are the target directions of the unit basis vectors at the origin in
* (u, v).
*
* @version ISO 19107
* @author Martin Desruisseaux (IRD)
* @since GeoAPI 2.0
*/
@UML(identifier = "GM_AffinePlacement", specification = ISO_19107)
public interface AffinePlacement extends Placement {
/**
* Gives the target of the parameter space origin. This is the vector (x0,
* y0, z0) in the formulae in the class description.
*/
@UML(identifier = "location", obligation = MANDATORY, specification = ISO_19107)
Position getLocation();
/**
* Gives the target directions for the coordinate basis vectors of the parameter space. These
* are the columns of the matrix in the formulae given in the class description. The number of
* directions given shall be {@link #getInDimension inDimension}. The dimension of the
* directions shall be {@link #getOutDimension outDimension}.
*
* @param dimension The in dimension, as an index from 0 inclusive to {@link #getInDimension
* inDimension} exclusive.
* @return The direction as an array of length {@link #getOutDimension outDimension}.
*/
@UML(identifier = "refDirection", obligation = MANDATORY, specification = ISO_19107)
double[] getReferenceDirection(int dimension);
}