Top Description Fields Constructors Methods
org.apache.commons.math3.geometry.euclidean.twod

public Class Vector2D

extends Object
implements Vector<Euclidean2D>
Class Inheritance
All Implemented Interfaces
org.apache.commons.math3.geometry.Vector, org.apache.commons.math3.geometry.Point, java.io.Serializable
Imports
java.text.NumberFormat, org.apache.commons.math3.exception.DimensionMismatchException, .MathArithmeticException, org.apache.commons.math3.exception.util.LocalizedFormats, org.apache.commons.math3.geometry.Point, .Space, .Vector, org.apache.commons.math3.util.FastMath, .MathArrays, .MathUtils

This class represents a 2D vector.

Instances of this class are guaranteed to be immutable.

Since
3.0

Field Summary

Modifier and TypeField and Description
public static final Vector2D
NaN

A vector with all coordinates set to NaN.

public static final Vector2D
NEGATIVE_INFINITY

A vector with all coordinates set to negative infinity.

public static final Vector2D
POSITIVE_INFINITY

A vector with all coordinates set to positive infinity.

private static final long
serialVersionUID

Serializable UID.

private final double
x

Abscissa.

private final double
y

Ordinate.

public static final Vector2D
ZERO

Origin (coordinates: 0, 0).

Constructor Summary

AccessConstructor and Description
public
Vector2D(double
abscissa
x
,
double
ordinate
y
)

Simple constructor.

public
Vector2D(double[]
coordinates array
v
)

Simple constructor.

public
Vector2D(double
scale factor
a
,
Vector2D
base (unscaled) vector
u
)

Multiplicative constructor Build a vector from another one and a scale factor.

public
Vector2D(double
first scale factor
a1
,
Vector2D
first base (unscaled) vector
u1
,
double
second scale factor
a2
,
Vector2D
second base (unscaled) vector
u2
)

Linear constructor Build a vector from two other ones and corresponding scale factors.

public
Vector2D(double
first scale factor
a1
,
Vector2D
first base (unscaled) vector
u1
,
double
second scale factor
a2
,
Vector2D
second base (unscaled) vector
u2
,
double
third scale factor
a3
,
Vector2D
third base (unscaled) vector
u3
)

Linear constructor Build a vector from three other ones and corresponding scale factors.

public
Vector2D(double
first scale factor
a1
,
Vector2D
first base (unscaled) vector
u1
,
double
second scale factor
a2
,
Vector2D
second base (unscaled) vector
u2
,
double
third scale factor
a3
,
Vector2D
third base (unscaled) vector
u3
,
double
fourth scale factor
a4
,
Vector2D
fourth base (unscaled) vector
u4
)

Linear constructor Build a vector from four other ones and corresponding scale factors.

Method Summary

Modifier and TypeMethod and Description
public Vector2D
add(Vector<Euclidean2D>
vector to add
v
)

Implements org.apache.commons.math3.geometry.Vector.add.

Add a vector to the instance.

public Vector2D
add(double
scale factor to apply to v before adding it
factor
,
Vector<Euclidean2D>
vector to add
v
)

Implements org.apache.commons.math3.geometry.Vector.add.

Add a scaled vector to the instance.

public static double

Returns:

angular separation between v1 and v2
angle
(Vector2D
first vector
v1
,
Vector2D
second vector
v2
)

Compute the angular separation between two vectors.

public double

Returns:

the cross-product
crossProduct
(final Vector2D
first point of the line
p1
,
final Vector2D
second point of the line
p2
)

Compute the cross-product of the instance and the given points.

public double
distance(Vector<Euclidean2D>
second vector
p
)

Implements org.apache.commons.math3.geometry.Vector.distance.

Compute the distance between the instance and another vector according to the L2 norm.

public double
distance(Point<Euclidean2D>
second point
p
)

Implements org.apache.commons.math3.geometry.Point.distance.

Compute the distance between the instance and another point.

public static double

Returns:

the distance between p1 and p2 according to the L2 norm
distance
(Vector2D
first vector
p1
,
Vector2D
second vector
p2
)

Compute the distance between two vectors according to the L2 norm.

public double
distance1(Vector<Euclidean2D>
second vector
p
)

Implements org.apache.commons.math3.geometry.Vector.distance1.

Compute the distance between the instance and another vector according to the L1 norm.

public double
distanceInf(Vector<Euclidean2D>
second vector
p
)

Implements org.apache.commons.math3.geometry.Vector.distanceInf.

Compute the distance between the instance and another vector according to the L∞ norm.

public static double

Returns:

the distance between p1 and p2 according to the L∞ norm
distanceInf
(Vector2D
first vector
p1
,
Vector2D
second vector
p2
)

Compute the distance between two vectors according to the L∞ norm.

public double
distanceSq(Vector<Euclidean2D>
second vector
p
)

Implements org.apache.commons.math3.geometry.Vector.distanceSq.

Compute the square of the distance between the instance and another vector.

public static double

Returns:

the square of the distance between p1 and p2
distanceSq
(Vector2D
first vector
p1
,
Vector2D
second vector
p2
)

Compute the square of the distance between two vectors.

public double
dotProduct(final Vector<Euclidean2D>
second vector
v
)

Implements org.apache.commons.math3.geometry.Vector.dotProduct.

Compute the dot-product of the instance and another vector.

public boolean

Returns:

true if two 2D vector objects are equal, false if object is null, not an instance of Vector2D, or not equal to this Vector2D instance
equals
(Object
Object to test for equality to this
other
)

Overrides java.lang.Object.equals.

Test for the equality of two 2D vectors.

public double
getNorm()

Implements org.apache.commons.math3.geometry.Vector.getNorm.

Get the L2 norm for the vector.

public double
getNorm1()

Implements org.apache.commons.math3.geometry.Vector.getNorm1.

Get the L1 norm for the vector.

public double
getNormInf()

Implements org.apache.commons.math3.geometry.Vector.getNormInf.

Get the L∞ norm for the vector.

public double
getNormSq()

Implements org.apache.commons.math3.geometry.Vector.getNormSq.

Get the square of the norm for the vector.

public Space
getSpace()

Implements org.apache.commons.math3.geometry.Point.getSpace.

Get the space to which the point belongs.

public double

Returns:

abscissa of the vector
getX
()

Get the abscissa of the vector.

public double

Returns:

ordinate of the vector
getY
()

Get the ordinate of the vector.

public Vector2D
getZero()

Implements org.apache.commons.math3.geometry.Vector.getZero.

Get the null vector of the vectorial space or origin point of the affine space.

public int

Returns:

a hash code value for this object
hashCode
()

Overrides java.lang.Object.hashCode.

Get a hashCode for the 2D vector.

public boolean
isInfinite()

Implements org.apache.commons.math3.geometry.Vector.isInfinite.

Returns true if any coordinate of this vector is infinite and none are NaN; false otherwise

public boolean
isNaN()

Implements org.apache.commons.math3.geometry.Point.isNaN.

Returns true if any coordinate of this point is NaN; false otherwise

public Vector2D
negate()

Implements org.apache.commons.math3.geometry.Vector.negate.

Get the opposite of the instance.

public Vector2D
normalize()

Implements org.apache.commons.math3.geometry.Vector.normalize.

Get a normalized vector aligned with the instance.

public Vector2D
scalarMultiply(double
scalar
a
)

Implements org.apache.commons.math3.geometry.Vector.scalarMultiply.

Multiply the instance by a scalar.

public Vector2D
subtract(Vector<Euclidean2D>
vector to subtract
p
)

Implements org.apache.commons.math3.geometry.Vector.subtract.

Subtract a vector from the instance.

public Vector2D
subtract(double
scale factor to apply to v before subtracting it
factor
,
Vector<Euclidean2D>
vector to subtract
v
)

Implements org.apache.commons.math3.geometry.Vector.subtract.

Subtract a scaled vector from the instance.

public double[]

Returns:

vector coordinates
toArray
()

Get the vector coordinates as a dimension 2 array.

public String

Returns:

a string representation of this vector
toString
()

Overrides java.lang.Object.toString.

Get a string representation of this vector.

public String
toString(final NumberFormat
the custom format for components
format
)

Implements org.apache.commons.math3.geometry.Vector.toString.

Get a string representation of this vector.

Inherited from java.lang.Object:
clonefinalizegetClassnotifynotifyAllwaitwaitwait

Field Detail

NaNback to summary
public static final Vector2D NaN

A vector with all coordinates set to NaN.

NEGATIVE_INFINITYback to summary
public static final Vector2D NEGATIVE_INFINITY

A vector with all coordinates set to negative infinity.

POSITIVE_INFINITYback to summary
public static final Vector2D POSITIVE_INFINITY

A vector with all coordinates set to positive infinity.

serialVersionUIDback to summary
private static final long serialVersionUID

Serializable UID.

xback to summary
private final double x

Abscissa.

yback to summary
private final double y

Ordinate.

ZEROback to summary
public static final Vector2D ZERO

Origin (coordinates: 0, 0).

Constructor Detail

Vector2Dback to summary
public Vector2D(double x, double y)

Simple constructor. Build a vector from its coordinates

Parameters
x:double

abscissa

y:double

ordinate

See Also
getX(), getY()
Vector2Dback to summary
public Vector2D(double[] v) throws DimensionMismatchException

Simple constructor. Build a vector from its coordinates

Parameters
v:double[]

coordinates array

Exceptions
DimensionMismatchException:
if array does not have 2 elements
See Also
toArray()
Vector2Dback to summary
public Vector2D(double a, Vector2D u)

Multiplicative constructor Build a vector from another one and a scale factor. The vector built will be a * u

Parameters
a:double

scale factor

u:Vector2D

base (unscaled) vector

Vector2Dback to summary
public Vector2D(double a1, Vector2D u1, double a2, Vector2D u2)

Linear constructor Build a vector from two other ones and corresponding scale factors. The vector built will be a1 * u1 + a2 * u2

Parameters
a1:double

first scale factor

u1:Vector2D

first base (unscaled) vector

a2:double

second scale factor

u2:Vector2D

second base (unscaled) vector

Vector2Dback to summary
public Vector2D(double a1, Vector2D u1, double a2, Vector2D u2, double a3, Vector2D u3)

Linear constructor Build a vector from three other ones and corresponding scale factors. The vector built will be a1 * u1 + a2 * u2 + a3 * u3

Parameters
a1:double

first scale factor

u1:Vector2D

first base (unscaled) vector

a2:double

second scale factor

u2:Vector2D

second base (unscaled) vector

a3:double

third scale factor

u3:Vector2D

third base (unscaled) vector

Vector2Dback to summary
public Vector2D(double a1, Vector2D u1, double a2, Vector2D u2, double a3, Vector2D u3, double a4, Vector2D u4)

Linear constructor Build a vector from four other ones and corresponding scale factors. The vector built will be a1 * u1 + a2 * u2 + a3 * u3 + a4 * u4

Parameters
a1:double

first scale factor

u1:Vector2D

first base (unscaled) vector

a2:double

second scale factor

u2:Vector2D

second base (unscaled) vector

a3:double

third scale factor

u3:Vector2D

third base (unscaled) vector

a4:double

fourth scale factor

u4:Vector2D

fourth base (unscaled) vector

Method Detail

addback to summary
public Vector2D add(Vector<Euclidean2D> v)

Implements org.apache.commons.math3.geometry.Vector.add.

Doc from org.apache.commons.math3.geometry.Vector.add.

Add a vector to the instance.

Parameters
v:Vector<Euclidean2D>

vector to add

Returns:Vector2D

a new vector

addback to summary
public Vector2D add(double factor, Vector<Euclidean2D> v)

Implements org.apache.commons.math3.geometry.Vector.add.

Doc from org.apache.commons.math3.geometry.Vector.add.

Add a scaled vector to the instance.

Parameters
factor:double

scale factor to apply to v before adding it

v:Vector<Euclidean2D>

vector to add

Returns:Vector2D

a new vector

angleback to summary
public static double angle(Vector2D v1, Vector2D v2) throws MathArithmeticException

Compute the angular separation between two vectors.

This method computes the angular separation between two vectors using the dot product for well separated vectors and the cross product for almost aligned vectors. This allows to have a good accuracy in all cases, even for vectors very close to each other.

Parameters
v1:Vector2D

first vector

v2:Vector2D

second vector

Returns:double

angular separation between v1 and v2

Exceptions
MathArithmeticException:
if either vector has a null norm
crossProductback to summary
public double crossProduct(final Vector2D p1, final Vector2D p2)

Compute the cross-product of the instance and the given points.

The cross product can be used to determine the location of a point with regard to the line formed by (p1, p2) and is calculated as: \[ P = (x_2 - x_1)(y_3 - y_1) - (y_2 - y_1)(x_3 - x_1) \] with \(p3 = (x_3, y_3)\) being this instance.

If the result is 0, the points are collinear, i.e. lie on a single straight line L; if it is positive, this point lies to the left, otherwise to the right of the line formed by (p1, p2).

Parameters
p1:Vector2D

first point of the line

p2:Vector2D

second point of the line

Returns:double

the cross-product

See Also
Cross product (Wikipedia)
distanceback to summary
public double distance(Vector<Euclidean2D> p)

Implements org.apache.commons.math3.geometry.Vector.distance.

Doc from org.apache.commons.math3.geometry.Vector.distance.

Compute the distance between the instance and another vector according to the L2 norm.

Calling this method is equivalent to calling: q.subtract(p).getNorm() except that no intermediate vector is built

Parameters
p:Vector<Euclidean2D>

second vector

Returns:double

the distance between the instance and p according to the L2 norm

distanceback to summary
public double distance(Point<Euclidean2D> p)

Implements org.apache.commons.math3.geometry.Point.distance.

Doc from org.apache.commons.math3.geometry.Point.distance.

Compute the distance between the instance and another point.

Parameters
p:Point<Euclidean2D>

second point

Returns:double

the distance between the instance and p

distanceback to summary
public static double distance(Vector2D p1, Vector2D p2)

Compute the distance between two vectors according to the L2 norm.

Calling this method is equivalent to calling: p1.subtract(p2).getNorm() except that no intermediate vector is built

Parameters
p1:Vector2D

first vector

p2:Vector2D

second vector

Returns:double

the distance between p1 and p2 according to the L2 norm

distance1back to summary
public double distance1(Vector<Euclidean2D> p)

Implements org.apache.commons.math3.geometry.Vector.distance1.

Doc from org.apache.commons.math3.geometry.Vector.distance1.

Compute the distance between the instance and another vector according to the L1 norm.

Calling this method is equivalent to calling: q.subtract(p).getNorm1() except that no intermediate vector is built

Parameters
p:Vector<Euclidean2D>

second vector

Returns:double

the distance between the instance and p according to the L1 norm

distanceInfback to summary
public double distanceInf(Vector<Euclidean2D> p)

Implements org.apache.commons.math3.geometry.Vector.distanceInf.

Doc from org.apache.commons.math3.geometry.Vector.distanceInf.

Compute the distance between the instance and another vector according to the L∞ norm.

Calling this method is equivalent to calling: q.subtract(p).getNormInf() except that no intermediate vector is built

Parameters
p:Vector<Euclidean2D>

second vector

Returns:double

the distance between the instance and p according to the L∞ norm

distanceInfback to summary
public static double distanceInf(Vector2D p1, Vector2D p2)

Compute the distance between two vectors according to the L∞ norm.

Calling this method is equivalent to calling: p1.subtract(p2).getNormInf() except that no intermediate vector is built

Parameters
p1:Vector2D

first vector

p2:Vector2D

second vector

Returns:double

the distance between p1 and p2 according to the L∞ norm

distanceSqback to summary
public double distanceSq(Vector<Euclidean2D> p)

Implements org.apache.commons.math3.geometry.Vector.distanceSq.

Doc from org.apache.commons.math3.geometry.Vector.distanceSq.

Compute the square of the distance between the instance and another vector.

Calling this method is equivalent to calling: q.subtract(p).getNormSq() except that no intermediate vector is built

Parameters
p:Vector<Euclidean2D>

second vector

Returns:double

the square of the distance between the instance and p

distanceSqback to summary
public static double distanceSq(Vector2D p1, Vector2D p2)

Compute the square of the distance between two vectors.

Calling this method is equivalent to calling: p1.subtract(p2).getNormSq() except that no intermediate vector is built

Parameters
p1:Vector2D

first vector

p2:Vector2D

second vector

Returns:double

the square of the distance between p1 and p2

dotProductback to summary
public double dotProduct(final Vector<Euclidean2D> v)

Implements org.apache.commons.math3.geometry.Vector.dotProduct.

Doc from org.apache.commons.math3.geometry.Vector.dotProduct.

Compute the dot-product of the instance and another vector.

Parameters
v:Vector<Euclidean2D>

second vector

Returns:double

the dot product this.v

equalsback to summary
public boolean equals(Object other)

Overrides java.lang.Object.equals.

Test for the equality of two 2D vectors.

If all coordinates of two 2D vectors are exactly the same, and none are Double.NaN, the two 2D vectors are considered to be equal.

NaN coordinates are considered to affect globally the vector and be equals to each other - i.e, if either (or all) coordinates of the 2D vector are equal to Double.NaN, the 2D vector is equal to NaN.

Parameters
other:Object

Object to test for equality to this

Returns:boolean

true if two 2D vector objects are equal, false if object is null, not an instance of Vector2D, or not equal to this Vector2D instance

Annotations
@Override
getNormback to summary
public double getNorm()

Implements org.apache.commons.math3.geometry.Vector.getNorm.

Doc from org.apache.commons.math3.geometry.Vector.getNorm.

Get the L2 norm for the vector.

Returns:double

Euclidean norm for the vector

getNorm1back to summary
public double getNorm1()

Implements org.apache.commons.math3.geometry.Vector.getNorm1.

Doc from org.apache.commons.math3.geometry.Vector.getNorm1.

Get the L1 norm for the vector.

Returns:double

L1 norm for the vector

getNormInfback to summary
public double getNormInf()

Implements org.apache.commons.math3.geometry.Vector.getNormInf.

Doc from org.apache.commons.math3.geometry.Vector.getNormInf.

Get the L∞ norm for the vector.

Returns:double

L∞ norm for the vector

getNormSqback to summary
public double getNormSq()

Implements org.apache.commons.math3.geometry.Vector.getNormSq.

Doc from org.apache.commons.math3.geometry.Vector.getNormSq.

Get the square of the norm for the vector.

Returns:double

square of the Euclidean norm for the vector

getSpaceback to summary
public Space getSpace()

Implements org.apache.commons.math3.geometry.Point.getSpace.

Doc from org.apache.commons.math3.geometry.Point.getSpace.

Get the space to which the point belongs.

Returns:Space

containing space

getXback to summary
public double getX()

Get the abscissa of the vector.

Returns:double

abscissa of the vector

See Also
Vector2D(double, double)
getYback to summary
public double getY()

Get the ordinate of the vector.

Returns:double

ordinate of the vector

See Also
Vector2D(double, double)
getZeroback to summary
public Vector2D getZero()

Implements org.apache.commons.math3.geometry.Vector.getZero.

Doc from org.apache.commons.math3.geometry.Vector.getZero.

Get the null vector of the vectorial space or origin point of the affine space.

Returns:Vector2D

null vector of the vectorial space or origin point of the affine space

hashCodeback to summary
public int hashCode()

Overrides java.lang.Object.hashCode.

Get a hashCode for the 2D vector.

All NaN values have the same hash code.

Returns:int

a hash code value for this object

Annotations
@Override
isInfiniteback to summary
public boolean isInfinite()

Implements org.apache.commons.math3.geometry.Vector.isInfinite.

Doc from org.apache.commons.math3.geometry.Vector.isInfinite.

Returns true if any coordinate of this vector is infinite and none are NaN; false otherwise

Returns:boolean

true if any coordinate of this vector is infinite and none are NaN; false otherwise

isNaNback to summary
public boolean isNaN()

Implements org.apache.commons.math3.geometry.Point.isNaN.

Doc from org.apache.commons.math3.geometry.Point.isNaN.

Returns true if any coordinate of this point is NaN; false otherwise

Returns:boolean

true if any coordinate of this point is NaN; false otherwise

negateback to summary
public Vector2D negate()

Implements org.apache.commons.math3.geometry.Vector.negate.

Doc from org.apache.commons.math3.geometry.Vector.negate.

Get the opposite of the instance.

Returns:Vector2D

a new vector which is opposite to the instance

normalizeback to summary
public Vector2D normalize() throws MathArithmeticException

Implements org.apache.commons.math3.geometry.Vector.normalize.

Doc from org.apache.commons.math3.geometry.Vector.normalize.

Get a normalized vector aligned with the instance.

Returns:Vector2D

a new normalized vector

Exceptions
MathArithmeticException:
if the norm is zero
scalarMultiplyback to summary
public Vector2D scalarMultiply(double a)

Implements org.apache.commons.math3.geometry.Vector.scalarMultiply.

Doc from org.apache.commons.math3.geometry.Vector.scalarMultiply.

Multiply the instance by a scalar.

Parameters
a:double

scalar

Returns:Vector2D

a new vector

subtractback to summary
public Vector2D subtract(Vector<Euclidean2D> p)

Implements org.apache.commons.math3.geometry.Vector.subtract.

Doc from org.apache.commons.math3.geometry.Vector.subtract.

Subtract a vector from the instance.

Parameters
p:Vector<Euclidean2D>

vector to subtract

Returns:Vector2D

a new vector

subtractback to summary
public Vector2D subtract(double factor, Vector<Euclidean2D> v)

Implements org.apache.commons.math3.geometry.Vector.subtract.

Doc from org.apache.commons.math3.geometry.Vector.subtract.

Subtract a scaled vector from the instance.

Parameters
factor:double

scale factor to apply to v before subtracting it

v:Vector<Euclidean2D>

vector to subtract

Returns:Vector2D

a new vector

toArrayback to summary
public double[] toArray()

Get the vector coordinates as a dimension 2 array.

Returns:double[]

vector coordinates

See Also
Vector2D(double[])
toStringback to summary
public String toString()

Overrides java.lang.Object.toString.

Get a string representation of this vector.

Returns:String

a string representation of this vector

Annotations
@Override
toStringback to summary
public String toString(final NumberFormat format)

Implements org.apache.commons.math3.geometry.Vector.toString.

Doc from org.apache.commons.math3.geometry.Vector.toString.

Get a string representation of this vector.

Parameters
format:NumberFormat

the custom format for components

Returns:String

a string representation of this vector