See: Description
| Interface | Description | 
|---|---|
| EuclideanTransform<V extends EuclideanVector<V>> | 
 Interface representing affine transforms in Euclidean space. 
 | 
| Class | Description | 
|---|---|
| AbstractAffineTransformMatrix<V extends EuclideanVector<V>,M extends AbstractAffineTransformMatrix<V,M>> | 
 Base class for affine transform matrices in Euclidean space. 
 | 
| AbstractBounds<P extends EuclideanVector<P>,B extends AbstractBounds<P,B>> | 
 Base class representing an axis-aligned bounding box with minimum and maximum bounding points. 
 | 
| AbstractLinecastPoint<P extends EuclideanVector<P>,U extends P,L extends Embedding<P,Vector1D>> | 
 Base class for intersections discovered during linecast operations. 
 | 
| AbstractNSphere<V extends EuclideanVector<V>> | 
 Abstract base class representing an n-sphere, which is a generalization of the ordinary 3 dimensional
 sphere to arbitrary dimensions. 
 | 
| EuclideanVector<V extends EuclideanVector<V>> | 
 Abstract base class for Euclidean vectors and points. 
 | 
| MultiDimensionalEuclideanVector<V extends MultiDimensionalEuclideanVector<V>> | 
 Abstract base class for Euclidean vectors with two or more dimensions. 
 | 
Euclidean space is the space commonly thought of when people think of geometry. It corresponds with the common notion of "flat" space or the space that we usually experience in the physical world. Mathematically, Euclidean space is an affine space, meaning that it consists of points and displacement vectors representing translations between points. Distances between points are given by the formula \( \sqrt{(A - B)^2} \), which is also known as the Euclidean norm.
 As alluded to above, points and vectors are separate, distinct entities:
 points represent locations in a space and vectors represent displacements.
 This difference is the reason that commons-geometry has separate
 Point and
 Vector interfaces. However,
 in the case of Euclidean space, the data structures used for points and
 vectors are identical and there is overlap in the methods needed for each
 type. Creating separate classes for Euclidean points and vectors therefore
 means a large amount of very similar or exactly duplicated code in order to
 maintain mathematical purity. This is not desirable, so a compromise position
 has been taken: there is a single class for each dimension that implements
 both Point and
 Vector. These classes are
 named Vector?D to reflect the fact that they support the full
 range of vector operations. It is up to users of the library to make the
 correct distinctions between instances that represent points and those that
 represent displacements. This approach is commonly used in other geometric
 libraries as well, such as the
 OpenGL
 Shading Language (GLSL), G3D,
 and Three.js.
 
In general, geometric concepts are independent of the coordinate system used to represent them. For example, in 2-dimensional Euclidean space, the fact that two points may be subtracted to yield a displacement vector holds true regardless of whether the points are represented using Cartesian coordinates or polar coordinates. From this point of view, all coordinate systems can be considered equal. However, this library does not treat all systems equal. In order to keep the API lightweight and simple, all coordinates are assumed to be Cartesian unless explicitly noted otherwise.
Copyright © 2016–2020 The Apache Software Foundation. All rights reserved.