Q
- The Quantity (unit type, such as Length or Volume) of this vector.public final class Vector3D<Q extends Quantity> extends Coordinate3D<Q> implements javolution.xml.XMLSerializable
vector
of Parameter elements sharing
the same units. In geometrical terms, this vector represents a set of 3 Cartesian
coordinates.
Modified by: Joseph A. Huwaldt
Modifier and Type | Field and Description |
---|---|
static Vector3D<Dimensionless> |
UNIT_X
A unit vector in the X axis direction.
|
static Vector3D<Dimensionless> |
UNIT_Y
A unit vector in the Y axis direction.
|
static Vector3D<Dimensionless> |
UNIT_Z
A unit vector in the Z axis direction.
|
static int |
X
Constant used to identify the X coordinate in the vector.
|
static int |
Y
Constant used to identify the Y coordinate in the vector.
|
static int |
Z
Constant used to identify the Z coordinate in the vector.
|
static Vector3D<Dimensionless> |
ZERO
A dimensionless vector with all the elements set to zero.
|
static Vector3D<Acceleration> |
ZERO_ACCELERATION
An acceleration vector with all the elements set to zero.
|
static Vector3D<Angle> |
ZERO_ANGLE
A angle vector with all the elements set to zero.
|
static Vector3D<Force> |
ZERO_FORCE
A force vector with all the elements set to zero.
|
static Vector3D<Length> |
ZERO_POSITION
A position or length vector with all the elements set to zero.
|
static Vector3D<Velocity> |
ZERO_VELOCITY
A velocity vector with all the elements set to zero.
|
Modifier and Type | Method and Description |
---|---|
<T extends Quantity> |
asType(java.lang.Class<T> type)
Casts this Vector3D to a parameterized unit of specified nature or throw a
ClassCastException if the dimension of the specified quantity and this
parameter's unit dimension do not match. |
Vector3D<Q> |
copy()
Returns a copy of this vector
allocated
by the calling thread (possibly on the stack). |
Vector3D |
cross(Vector that)
Returns the cross product of two 3-dimensional vectors.
|
Vector3D<Q> |
divide(double divisor)
Returns this vector with each element divided by the specified divisor
(dimensionless).
|
Vector3D<?> |
divide(Parameter<?> that)
Returns this vector with each element divided by the specified divisor.
|
boolean |
equals(java.lang.Object obj)
Compares this Vector3D against the specified object for strict equality (same
values and same units).
|
Vector3D<Q> |
fromVector3D(Vector3D<Q> vector)
Return the specified
Vector3D object as a Vector3D instance. |
Parameter<Q> |
get(int i)
Returns the value of a Parameter from this vector.
|
Unit<Q> |
getUnit()
Returns the unit in which the
values in this vector are stated
in. |
double |
getValue(int i)
Returns the value of the Parameter in this vector as a
double , stated
in this vector's unit . |
int |
hashCode()
Returns the hash code for this parameter.
|
static void |
main(java.lang.String[] args)
Tests the methods in this class.
|
static <R extends Quantity> |
makeSkewSymmetric(double a,
double b,
double c,
Unit<R> unit)
Returns a 3x3 skew-symmetric matrix representation of the values in the input 3D
vector stated in the specified units.
|
Vector3D<Q> |
minus(Parameter<Q> that)
Subtracts the supplied Parameter from each element of this vector and returns the
result.
|
Vector3D<Q> |
minus(Vector<Parameter<Q>> that)
Returns the difference between this vector and the one specified.
|
double |
normValue()
Returns the
AbstractParamVector.norm() , magnitude, or length value of this vector. |
Vector3D<Q> |
opposite()
Returns the negation of this vector.
|
Vector3D<Q> |
plus(Parameter<Q> that)
Returns the sum of this vector with the parameter specified.
|
Vector3D<Q> |
plus(Vector<Parameter<Q>> that)
Returns the sum of this vector with the one specified.
|
Vector3D<Q> |
times(double k)
Returns the product of this vector with the specified coefficient.
|
Vector3D |
times(Parameter k)
Returns the product of this vector with the specified coefficient.
|
Parameter |
times(Vector that)
Returns the dot product of this vector with the one specified.
|
Vector3D |
timesEBE(Vector that)
Returns the element-by-element product of this vector with the one specified.
|
<R extends Quantity> |
to(Unit<R> unit)
Returns the equivalent to this vector but stated in the specified unit.
|
Float64Vector |
toFloat64Vector()
Returns double the values stored in this vector, stated in this vector's
unit , as a Float64Vector. |
Matrix3D<Q> |
toSkewSymmetric()
Returns a 3x3 skew-symmetric matrix representation of the values in this vector
stated in this vector's
unit . |
Vector3D<Dimensionless> |
toUnitVector()
Returns this vector converted to a unit vector by dividing all the vector's
elements by the length (
AbstractParamVector.norm() ) of this vector. |
Vector3D<Q> |
toVector3D()
Returns a Cartesian Vector3D representation of this vector.
|
static <Q extends Quantity> |
valueOf(double x,
double y,
double z,
Unit<Q> unit)
Returns a
Vector3D instance holding the specified double
values stated in the specified units. |
static <Q extends Quantity> |
valueOf(Parameter<Q> x,
Parameter<Q> y,
Parameter<Q> z)
Returns a
Vector3D instance holding the specified Parameter
values. |
static <Q extends Quantity> |
valueOf(Vector<Float64> vector,
Unit<Q> unit)
Returns a
Vector3D instance containing the specified vector of Float64
values stated in the specified units. |
static <Q extends Quantity> |
valueOf(Vector<Parameter<Q>> vector)
Returns a
Vector3D instance containing the specified vector of Parameter
values with compatible units. |
getDimension, isApproxEqual, isApproxZero
public static final int X
public static final int Y
public static final int Z
public static final Vector3D<Dimensionless> ZERO
public static final Vector3D<Length> ZERO_POSITION
public static final Vector3D<Velocity> ZERO_VELOCITY
public static final Vector3D<Acceleration> ZERO_ACCELERATION
public static final Vector3D<Force> ZERO_FORCE
public static final Vector3D<Angle> ZERO_ANGLE
public static final Vector3D<Dimensionless> UNIT_X
public static final Vector3D<Dimensionless> UNIT_Y
public static final Vector3D<Dimensionless> UNIT_Z
public static <Q extends Quantity> Vector3D<Q> valueOf(double x, double y, double z, Unit<Q> unit)
Vector3D
instance holding the specified double
values stated in the specified units.Q
- the Quantity (unit type, e.g. Length or Volume) of this vector.x
- the x value stated in the specified unit.y
- the y value stated in the specified unit.z
- the z value stated in the specified unit.unit
- the unit in which the coordinates are stated.public static <Q extends Quantity> Vector3D<Q> valueOf(Parameter<Q> x, Parameter<Q> y, Parameter<Q> z)
Vector3D
instance holding the specified Parameter
values. All the values are converted to the same units as the x value.Q
- the Quantity (unit type, e.g. Length or Volume) of this vector.x
- the x value.y
- the y value.z
- the z value.public static <Q extends Quantity> Vector3D<Q> valueOf(Vector<Float64> vector, Unit<Q> unit)
Vector3D
instance containing the specified vector of Float64
values stated in the specified units. The vector must have only 3 elements.Q
- the Quantity (unit type, e.g. Length or Volume) of this vector.vector
- the vector of Float64 values stated in the specified unit (must have
dimension of 3).unit
- the unit in which the coordinates are stated.public static <Q extends Quantity> Vector3D<Q> valueOf(Vector<Parameter<Q>> vector)
Vector3D
instance containing the specified vector of Parameter
values with compatible units. The vector must have only 3 elements. All the values
are converted to the same units as the 1st value.Q
- the Quantity (unit type, e.g. Length or Volume) of this vector.vector
- the vector of Parameter values (must have dimension of 3).public Vector3D<Q> fromVector3D(Vector3D<Q> vector)
Vector3D
object as a Vector3D
instance.fromVector3D
in class AbstractParamVector<Q extends Quantity,Coordinate3D<Q extends Quantity>>
vector
- The Vector3D
object to be converted to a
Vector3D
.public double getValue(int i)
double
, stated
in this vector's unit
.getValue
in class AbstractParamVector<Q extends Quantity,Coordinate3D<Q extends Quantity>>
i
- the dimension index.i
.java.lang.IndexOutOfBoundsException
- (i < 0) || (i > dimension()-1)
public double normValue()
AbstractParamVector.norm()
, magnitude, or length value of this vector.normValue
in class AbstractParamVector<Q extends Quantity,Coordinate3D<Q extends Quantity>>
this.norm().doubleValue()
.public Vector3D<Q> plus(Vector<Parameter<Q>> that)
public Vector3D<Q> plus(Parameter<Q> that)
plus
in class AbstractParamVector<Q extends Quantity,Coordinate3D<Q extends Quantity>>
that
- the parameter to be added to each element of this vector.this + that
.public Vector3D<Q> minus(Vector<Parameter<Q>> that)
public Vector3D<Q> minus(Parameter<Q> that)
minus
in class AbstractParamVector<Q extends Quantity,Coordinate3D<Q extends Quantity>>
that
- the Parameter to be subtracted from each element of this vector.this - that
.public Vector3D times(Parameter k)
public Vector3D<Q> times(double k)
times
in class AbstractParamVector<Q extends Quantity,Coordinate3D<Q extends Quantity>>
k
- the coefficient multiplier.this · k
public Parameter times(Vector that)
times
in class Vector<Parameter<Q extends Quantity>>
that
- the vector multiplier.this · that
DimensionException
- if this.dimension() != that.dimension()
public Vector3D timesEBE(Vector that)
that
- the vector multiplier.this .* that
DimensionException
- if this.dimension() != that.dimension()
public Vector3D<Q> divide(double divisor)
divide
in class AbstractParamVector<Q extends Quantity,Coordinate3D<Q extends Quantity>>
divisor
- the divisor.this / divisor
.public Vector3D cross(Vector that)
cross
in class Vector<Parameter<Q extends Quantity>>
that
- the vector multiplier.this x that
DimensionException
- if (that.getDimension() != 3)
public Vector3D<?> divide(Parameter<?> that)
that
- the divisor.this / that
.public Vector3D<Dimensionless> toUnitVector()
AbstractParamVector.norm()
) of this vector.toUnitVector
in class Coordinate3D<Q extends Quantity>
public Vector3D<Q> copy()
allocated
by the calling thread (possibly on the stack).public Unit<Q> getUnit()
values
in this vector are stated
in.getUnit
in class AbstractParamVector<Q extends Quantity,Coordinate3D<Q extends Quantity>>
public <R extends Quantity> Vector3D<R> to(Unit<R> unit) throws ConversionException
to
in class AbstractParamVector<Q extends Quantity,Coordinate3D<Q extends Quantity>>
R
- the Quantity (unit type, e.g. Length or Volume) of the returned vector.unit
- the unit of the vector to be returned.ConversionException
- if the current model does not allows for conversion to
the specified unit.public <T extends Quantity> Vector3D<T> asType(java.lang.Class<T> type) throws java.lang.ClassCastException
ClassCastException
if the dimension of the specified quantity and this
parameter's unit dimension do not match.asType
in class Coordinate3D<Q extends Quantity>
T
- the Quantity (unit type, e.g. Length or Volume) of the returned vector.type
- the quantity class identifying the nature of the unit.java.lang.ClassCastException
- if the dimension of this parameter's unit is different
from the specified quantity dimension.java.lang.UnsupportedOperationException
- if the specified quantity class does not have
a public static field named "UNIT" holding the standard unit for the quantity.public Vector3D<Q> toVector3D()
toVector3D
in class AbstractParamVector<Q extends Quantity,Coordinate3D<Q extends Quantity>>
public Float64Vector toFloat64Vector()
unit
, as a Float64Vector.public Matrix3D<Q> toSkewSymmetric()
unit
.
A skew symmetric representation of a vector is defined by:
| 0 -c b| |a| | c 0 -a| <-- |b| |-b a 0| |c|
public static <R extends Quantity> Matrix3D<R> makeSkewSymmetric(double a, double b, double c, Unit<R> unit)
A skew symmetric representation of a vector is defined by:
| 0 -c b| |a| | c 0 -a| <-- |b| |-b a 0| |c|
This is a more efficient convenience method equivalent to:
Vector3D.valueOf(a, b, c, Dimensionless.UNIT).toSkewSymmetric();
R
- the Quantity (unit type, e.g. Length or Volume) of the returned matrix.a
- The 1st element of the 3D vectorb
- The 2nd element of the 3D vectorc
- The 3rd element of the 3D vectorunit
- The unit that the elements are stated in.public boolean equals(java.lang.Object obj)
public int hashCode()
public static void main(java.lang.String[] args)
args
- Command line arguments (ignored).