Class Vector2D.Unit
java.lang.Object
org.apache.commons.geometry.euclidean.EuclideanVector<Vector2D>
org.apache.commons.geometry.euclidean.MultiDimensionalEuclideanVector<Vector2D>
org.apache.commons.geometry.euclidean.twod.Vector2D
org.apache.commons.geometry.euclidean.twod.Vector2D.Unit
- Enclosing class:
Vector2D
Represents unit vectors.
This allows optimizations for certain operations.
-
Nested Class Summary
Nested classes/interfaces inherited from class Vector2D
Vector2D.Sum, Vector2D.Unit -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final Vector2D.UnitNegation of unit vector (coordinates: -1, 0).static final Vector2D.UnitNegation of unit vector (coordinates: 0, -1).static final Vector2D.UnitUnit vector (coordinates: 1, 0).static final Vector2D.UnitUnit vector (coordinates: 0, 1).private static final doubleFactor used to scale down coordinate values in order to produce normalized coordinates without overflow or underflow.private static final doubleFactor used to scale up coordinate values in order to produce normalized coordinates without overflow or underflow.private static final doubleMaximum coordinate value for computing normalized vectors with raw, unscaled values.Fields inherited from class Vector2D
COORDINATE_ASCENDING_ORDER, NaN, NEGATIVE_INFINITY, POSITIVE_INFINITY, ZERO -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic Vector2D.Unitfrom(double x, double y) Create a normalized vector.static Vector2D.UnitCreate a normalized vector.negate()Get the negation of the instance.doublenorm()Get the L2 norm (commonly known as the Euclidean norm) for the vector.Get a normalized vector aligned with the instance.Attempt to compute a normalized vector aligned with the instance, returning null if such a vector cannot be computed.doublenormSq()Get the square of the L2 norm (also known as the Euclidean norm) for the vector.Get a unit vector orthogonal to the instance.private static Vector2D.UnittryCreateNormalized(double x, double y, boolean throwOnFailure) Attempt to create a normalized vector from the given coordinate values.withNorm(double mag) Returns a vector with the same direction but with the given norm.Methods inherited from class Vector2D
add, add, angle, centroid, centroid, directionTo, distance, distanceSq, dot, eq, equals, getDimension, getX, getY, getZero, hashCode, isFinite, isInfinite, isNaN, lerp, max, max, min, min, multiply, of, of, orthogonal, parse, project, reject, signedArea, subtract, subtract, toArray, toString, transform, vectorToMethods inherited from class EuclideanVector
getCheckedNorm, isZero
-
Field Details
-
PLUS_X
Unit vector (coordinates: 1, 0). -
MINUS_X
Negation of unit vector (coordinates: -1, 0). -
PLUS_Y
Unit vector (coordinates: 0, 1). -
MINUS_Y
Negation of unit vector (coordinates: 0, -1). -
UNSCALED_MAX
private static final double UNSCALED_MAXMaximum coordinate value for computing normalized vectors with raw, unscaled values.- See Also:
-
SCALE_UP_FACTOR
private static final double SCALE_UP_FACTORFactor used to scale up coordinate values in order to produce normalized coordinates without overflow or underflow.- See Also:
-
SCALE_DOWN_FACTOR
private static final double SCALE_DOWN_FACTORFactor used to scale down coordinate values in order to produce normalized coordinates without overflow or underflow.- See Also:
-
-
Constructor Details
-
Unit
private Unit(double x, double y) Simple constructor. Callers are responsible for ensuring that the given values represent a normalized vector.- Parameters:
x- abscissa (first coordinate value)y- abscissa (second coordinate value)
-
-
Method Details
-
norm
public double norm()Get the L2 norm (commonly known as the Euclidean norm) for the vector. This corresponds to the common notion of vector magnitude or length and is defined as the square root of the sum of the squares of all vector components. -
normSq
public double normSq()Get the square of the L2 norm (also known as the Euclidean norm) for the vector. This is equal to the sum of the squares of all vector components. -
normalize
-
normalizeOrNull
Attempt to compute a normalized vector aligned with the instance, returning null if such a vector cannot be computed. This method is equivalent toVector.normalize()but returns null instead of throwing an exception on failure.- Specified by:
normalizeOrNullin interfaceVector<Vector2D>- Overrides:
normalizeOrNullin classVector2D- Returns:
- normalized vector or null if such a vector cannot be computed, i.e. if the norm is zero, NaN, or infinite
- See Also:
-
orthogonal
Get a unit vector orthogonal to the instance. The returned vector is computed by rotating the current instancepi/2radians counterclockwise around the origin and normalizing. For example, if this method is called on a vector pointing along the positive x-axis, then a unit vector representing the positive y-axis is returned.- Overrides:
orthogonalin classVector2D- Returns:
- a unit vector orthogonal to the current instance
-
withNorm
Returns a vector with the same direction but with the given norm. This is equivalent to callingvec.normalize().scalarMultiply(mag)but without the intermediate vector. -
negate
-
from
Create a normalized vector.- Parameters:
x- Vector coordinate.y- Vector coordinate.- Returns:
- a vector whose norm is 1.
- Throws:
IllegalArgumentException- if the norm of the given value is zero, NaN, or infinite
-
from
Create a normalized vector.- Parameters:
v- Vector.- Returns:
- a vector whose norm is 1.
- Throws:
IllegalArgumentException- if the norm of the given value is zero, NaN, or infinite
-
tryCreateNormalized
Attempt to create a normalized vector from the given coordinate values. IfthrowOnFailureis true, an exception is thrown if a normalized vector cannot be created. Otherwise, null is returned.- Parameters:
x- x coordinatey- y coordinatethrowOnFailure- if true, an exception will be thrown if a normalized vector cannot be created- Returns:
- normalized vector or null if one cannot be created and
throwOnFailureis false - Throws:
IllegalArgumentException- if the computed norm is zero, NaN, or infinite
-