@Immutable public final class VectorI4D extends Object implements VectorReadable4DType
A four-dimensional immutable vector type with double elements.
Values of this type are immutable and can therefore be safely accessed from multiple threads.
| Constructor and Description |
|---|
VectorI4D()
Default constructor, initializing the vector with values
[0.0, 0.0,
0.0, 1.0]. |
VectorI4D(double in_x,
double in_y,
double in_z,
double in_w)
Construct a vector initialized with the given values.
|
VectorI4D(VectorReadable4DType in_v)
Construct a vector initialized with the values given in the vector
in_v. |
| Modifier and Type | Method and Description |
|---|---|
static VectorI4D |
absolute(VectorReadable4DType v)
Calculate the absolute value of the vector
v. |
static VectorI4D |
add(VectorReadable4DType v0,
VectorReadable4DType v1)
Calculate the element-wise sum of the vectors
v0 and v1. |
static VectorI4D |
addScaled(VectorReadable4DType v0,
VectorReadable4DType v1,
double r)
Calculate the element-wise sum of the vectors
v0 and the
element-wise product of v1 and r. |
static boolean |
almostEqual(com.io7m.jequality.AlmostEqualDouble.ContextRelative context,
VectorReadable4DType va,
VectorReadable4DType vb)
Determine whether or not the vectors
va and vb are equal to
within the degree of error given in context. |
static VectorI4D |
clamp(VectorReadable4DType v,
double minimum,
double maximum)
Clamp the elements of the vector
v to the range {@code [minimum .. |
static VectorI4D |
clampByVector(VectorReadable4DType v,
VectorReadable4DType minimum,
VectorReadable4DType maximum)
Clamp the elements of the vector
v to the inclusive range given by
the corresponding elements in minimum and maximum. |
static VectorI4D |
clampMaximum(VectorReadable4DType v,
double maximum)
Clamp the elements of the vector
v to the range {@code [-Infinity
.. |
static VectorI4D |
clampMaximumByVector(VectorReadable4DType v,
VectorReadable4DType maximum)
Clamp the elements of the vector
v to the inclusive range given by
the corresponding elements in maximum. |
static VectorI4D |
clampMinimum(VectorReadable4DType v,
double minimum)
Clamp the elements of the vector
v to the range {@code [minimum .. |
static VectorI4D |
clampMinimumByVector(VectorReadable4DType v,
VectorReadable4DType minimum)
Clamp the elements of the vector
v to the inclusive range given by
the corresponding elements in minimum. |
static double |
distance(VectorReadable4DType v0,
VectorReadable4DType v1)
Calculate the distance between the two vectors
v0 and v1. |
static double |
dotProduct(VectorReadable4DType v0,
VectorReadable4DType v1)
Calculate the scalar product of the vectors
v0 and v1. |
boolean |
equals(Object obj) |
double |
getWD() |
double |
getXD() |
double |
getYD() |
double |
getZD() |
int |
hashCode() |
static VectorI4D |
interpolateLinear(VectorReadable4DType v0,
VectorReadable4DType v1,
double alpha)
Linearly interpolate between
v0 and v1 by the amount alpha. |
static double |
magnitude(VectorReadable4DType v)
Calculate the magnitude of the vector
v. |
static double |
magnitudeSquared(VectorReadable4DType v)
Calculate the squared magnitude of the vector
v. |
static VectorI4D |
normalize(VectorReadable4DType v)
Normalize the vector
v, preserving its direction but reducing it to
unit length. |
static com.io7m.jfunctional.Pair<VectorI4D,VectorI4D> |
orthoNormalize(VectorReadable4DType v0,
VectorReadable4DType v1)
Orthonormalize and return the vectors
v0 and v1 . |
static VectorI4D |
projection(VectorReadable4DType p,
VectorReadable4DType q)
Calculate the projection of the vector
p onto the vector q. |
static VectorI4D |
scale(VectorReadable4DType v,
double r)
Scale the vector
v by the scalar r. |
static VectorI4D |
subtract(VectorReadable4DType v0,
VectorReadable4DType v1)
Subtract the vector
v1 from the vector v0. |
String |
toString() |
public static final VectorI4D ZERO
public VectorI4D()
[0.0, 0.0,
0.0, 1.0].public VectorI4D(double in_x,
double in_y,
double in_z,
double in_w)
in_x - The x valuein_y - The y valuein_z - The z valuein_w - The w valuepublic VectorI4D(VectorReadable4DType in_v)
in_v.in_v - The input vector.public static VectorI4D absolute(VectorReadable4DType v)
v.v - The input vector(abs v.x, abs v.y, abs v.z, abs v.w)public static VectorI4D add(VectorReadable4DType v0, VectorReadable4DType v1)
v0 and v1.v0 - The left input vectorv1 - The right input vector(v0.x + v1.x, v0.y + v1.y, v0.z + v1.z, v0.w + v1.w)public static VectorI4D addScaled(VectorReadable4DType v0, VectorReadable4DType v1, double r)
v0 and the
element-wise product of v1 and r.v0 - The left input vectorv1 - The right input vectorr - The scaling value(v0.x + (v1.x * r), v0.y + (v1.y * r), v0.z + (v1.z * r),
v0.w + (v1.w * r))public static boolean almostEqual(com.io7m.jequality.AlmostEqualDouble.ContextRelative context,
VectorReadable4DType va,
VectorReadable4DType vb)
va and vb are equal to
within the degree of error given in context.context - The equality contextva - The left input vectorvb - The right input vectortrue iff the vectors are almost equal.AlmostEqualDouble.almostEqual(AlmostEqualDouble.ContextRelative,
double, double)public static VectorI4D clamp(VectorReadable4DType v, double minimum, double maximum)
v to the range [minimum ..
maximum] inclusive.v - The input vectorminimum - The minimum allowed valuemaximum - The maximum allowed valuemaximum and at
least minimumpublic static VectorI4D clampByVector(VectorReadable4DType v, VectorReadable4DType minimum, VectorReadable4DType maximum)
v to the inclusive range given by
the corresponding elements in minimum and maximum.v - The input vectorminimum - The vector containing the minimum acceptable valuesmaximum - The vector containing the maximum acceptable values(min(max(v.x, minimum.x), maximum.x), min(max(v.y,
minimum.y), maximum.y), min(max(v.z, minimum.z), maximum.z), min(max(v.w,
minimum.w), maximum.w))public static VectorI4D clampMaximum(VectorReadable4DType v, double maximum)
v to the range [-Infinity
.. maximum] inclusive.v - The input vectormaximum - The maximum allowed valuemaximumpublic static VectorI4D clampMaximumByVector(VectorReadable4DType v, VectorReadable4DType maximum)
v to the inclusive range given by
the corresponding elements in maximum.v - The input vectormaximum - The vector containing the maximum acceptable values(min(v.x, maximum.x), min(v.y, maximum.y), min(v.z,
maximum.z), min(v.w, maximum.w))public static VectorI4D clampMinimum(VectorReadable4DType v, double minimum)
v to the range [minimum ..
Infinity] inclusive.v - The input vectorminimum - The minimum allowed valueminimum.public static VectorI4D clampMinimumByVector(VectorReadable4DType v, VectorReadable4DType minimum)
v to the inclusive range given by
the corresponding elements in minimum.v - The input vectorminimum - The vector containing the minimum acceptable values(max(v.x, minimum.x), max(v.y, minimum.y), max(v.z,
minimum.z), max(v.w, minimum.w))public static double distance(VectorReadable4DType v0, VectorReadable4DType v1)
v0 and v1.v0 - The left input vectorv1 - The right input vectorpublic static double dotProduct(VectorReadable4DType v0, VectorReadable4DType v1)
v0 and v1.v0 - The left input vectorv1 - The right input vectorpublic static VectorI4D interpolateLinear(VectorReadable4DType v0, VectorReadable4DType v1, double alpha)
v0 and v1 by the amount alpha.
The alpha parameter controls the degree of interpolation, such
that:
interpolateLinear(v0, v1, 0.0) = v0interpolateLinear(v0, v1, 1.0) = v1v0 - The left input vector.v1 - The right input vector.alpha - The interpolation value, between 0.0 and 1.0.(1 - alpha) * v0 + alpha * v1public static double magnitude(VectorReadable4DType v)
v.
Correspondingly, magnitude(normalize(v)) == 1.0.v - The input vectorpublic static double magnitudeSquared(VectorReadable4DType v)
v.v - The input vectorpublic static VectorI4D normalize(VectorReadable4DType v)
v, preserving its direction but reducing it to
unit length.v - The input vectorv but with magnitude
equal to 1.0public static com.io7m.jfunctional.Pair<VectorI4D,VectorI4D> orthoNormalize(VectorReadable4DType v0, VectorReadable4DType v1)
Orthonormalize and return the vectors v0 and v1 .
See GSP
v0 - The left vectorv1 - The right vector(v0, v1), orthonormalized.public static VectorI4D projection(VectorReadable4DType p, VectorReadable4DType q)
p onto the vector q.p - The left vectorq - The right vector((dotProduct p q) / magnitudeSquared q) * qpublic static VectorI4D scale(VectorReadable4DType v, double r)
v by the scalar r.v - The input vectorr - The scaling value(v.x * r, v.y * r, v.z * r, v.w * r)public static VectorI4D subtract(VectorReadable4DType v0, VectorReadable4DType v1)
v1 from the vector v0.v0 - The left input vectorv1 - The right input vector(v0.x - v1.x, v0.y - v1.y, v0.z - v1.z)public double getWD()
getWD in interface VectorReadable4DTypepublic double getXD()
getXD in interface VectorReadable2DTypepublic double getYD()
getYD in interface VectorReadable2DTypepublic double getZD()
getZD in interface VectorReadable3DTypeCopyright © 2016 <code@io7m.com> http://io7m.com