public class VectorM4D extends Object implements VectorReadable4DType, VectorWritable4DType
A four-dimensional mutable vector type with double precision elements.
Values of this type cannot be accessed safely from multiple threads without explicit synchronization.
| Constructor and Description |
|---|
VectorM4D()
Default constructor, initializing the vector with values
[0.0, 0.0, 0.0, 1.0]. |
VectorM4D(double in_x,
double in_y,
double in_z,
double in_w)
Construct a vector initialized with the given values.
|
VectorM4D(VectorReadable4DType in_v)
Construct a vector initialized with the values given in the vector
v. |
| Modifier and Type | Method and Description |
|---|---|
static VectorM4D |
absolute(VectorReadable4DType v,
VectorM4D out)
Calculate the absolute values of the elements in vector
v,
saving the result to out. |
static VectorM4D |
absoluteInPlace(VectorM4D v)
Calculate the absolute values of the elements in vector
v,
modifying the vector in-place. |
static VectorM4D |
add(VectorReadable4DType v0,
VectorReadable4DType v1,
VectorM4D out)
Calculate the element-wise sum of the vectors
v0 and
v1, saving the result to out. |
static VectorM4D |
addInPlace(VectorM4D v0,
VectorReadable4DType v1)
Calculate the element-wise sum of the vectors
v0 and
v1, saving the result to v0. |
static VectorM4D |
addScaled(VectorReadable4DType v0,
VectorReadable4DType v1,
double r,
VectorM4D out)
Calculate the element-wise sum of the vectors
v0 and the
element-wise product of v1 and r, saving the
result to out. |
static VectorM4D |
addScaledInPlace(VectorM4D v0,
VectorReadable4DType v1,
double r)
Calculate the element-wise sum of the vectors
v0 and the
element-wise product of v1 and r, saving the
result to v0. |
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 VectorM4D |
clamp(VectorReadable4DType v,
double minimum,
double maximum,
VectorM4D out)
Clamp the elements of the vector
v to the range
[minimum .. |
static VectorM4D |
clampByVector(VectorReadable4DType v,
VectorReadable4DType minimum,
VectorReadable4DType maximum,
VectorM4D out)
Clamp the elements of the vector
v to the inclusive range
given by the corresponding elements in minimum and
maximum, saving the result to out. |
static VectorM4D |
clampByVectorInPlace(VectorM4D 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, saving the result to v. |
static VectorM4D |
clampInPlace(VectorM4D v,
double minimum,
double maximum)
Clamp the elements of the vector
v to the range
[minimum .. |
static VectorM4D |
clampMaximum(VectorReadable4DType v,
double maximum,
VectorM4D out)
Clamp the elements of the vector
v to the range
[-Infinity .. |
static VectorM4D |
clampMaximumByVector(VectorReadable4DType v,
VectorReadable4DType maximum,
VectorM4D out)
Clamp the elements of the vector
v to the inclusive range
given by the corresponding elements in maximum, saving the
result to out. |
static VectorM4D |
clampMaximumByVectorInPlace(VectorM4D v,
VectorReadable4DType maximum)
Clamp the elements of the vector
v to the inclusive range
given by the corresponding elements in maximum, saving the
result to v. |
static VectorM4D |
clampMaximumInPlace(VectorM4D v,
double maximum)
Clamp the elements of the vector
v to the range
[-Infinity .. |
static VectorM4D |
clampMinimum(VectorReadable4DType v,
double minimum,
VectorM4D out)
Clamp the elements of the vector
v to the range
[minimum .. |
static VectorM4D |
clampMinimumByVector(VectorReadable4DType v,
VectorReadable4DType minimum,
VectorM4D out)
Clamp the elements of the vector
v to the inclusive range
given by the corresponding elements in minimum, saving the
result to out. |
static VectorM4D |
clampMinimumByVectorInPlace(VectorM4D v,
VectorReadable4DType minimum)
Clamp the elements of the vector
v to the inclusive range
given by the corresponding elements in minimum, saving the
result to v. |
static VectorM4D |
clampMinimumInPlace(VectorM4D v,
double minimum)
Clamp the elements of the vector
v to the range
[minimum .. |
static VectorWritable4DType |
copy(VectorReadable4DType input,
VectorWritable4DType output)
Copy all elements of the vector
input to the vector
output. |
void |
copyFrom2D(VectorReadable2DType in_v)
Set the current vector to the contents of the input vector.
|
void |
copyFrom3D(VectorReadable3DType in_v)
Set the current vector to the contents of the input vector.
|
void |
copyFrom4D(VectorReadable4DType in_v)
Set the current vector to the contents of the input vector.
|
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 VectorM4D |
interpolateLinear(VectorReadable4DType v0,
VectorReadable4DType v1,
double alpha,
VectorM4D r)
Linearly interpolate between
v0 and v1 by the
amount alpha, saving the result to r. |
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 VectorM4D |
normalize(VectorReadable4DType v,
VectorM4D out)
Returns a vector with the same orientation as
v but with
magnitude equal to 1.0 in out. |
static VectorM4D |
normalizeInPlace(VectorM4D v)
Returns a vector with the same orientation as
v but with
magnitude equal to 1.0 in v. |
static com.io7m.jfunctional.Pair<VectorM4D,VectorM4D> |
orthoNormalize(VectorReadable4DType v0,
VectorReadable4DType v1)
Orthonormalize and return the vectors
v0 and v1
. |
static void |
orthoNormalizeInPlace(VectorM4D v0,
VectorM4D v1)
Orthonormalize and the vectors
v0 and v1. |
static VectorM4D |
projection(VectorReadable4DType p,
VectorReadable4DType q,
VectorM4D r)
Calculate the projection of the vector
p onto the vector
q, saving the result in r. |
static VectorM4D |
scale(VectorReadable4DType v,
double r,
VectorM4D out)
Scale the vector
v by the scalar r, saving the
result to out. |
static VectorM4D |
scaleInPlace(VectorM4D v,
double r)
Scale the vector
v by the scalar r, saving the
result to v. |
void |
set2D(double in_x,
double in_y)
Set the current
x and y values of the current
vector. |
void |
set3D(double in_x,
double in_y,
double in_z)
Set the current
x, y and z values
of the current vector. |
void |
set4D(double in_x,
double in_y,
double in_z,
double in_w)
Set the current
x, y, z and
w values of the current vector. |
void |
setWD(double in_w)
Set the current
w value of the current vector. |
void |
setXD(double in_x)
Set the current
x value of the current vector. |
void |
setYD(double in_y)
Set the current
y value of the current vector. |
void |
setZD(double in_z)
Set the current
z value of the current vector. |
static VectorM4D |
subtract(VectorReadable4DType v0,
VectorReadable4DType v1,
VectorM4D out)
Subtract the vector
v1 from the vector v0,
saving the result to out. |
static VectorM4D |
subtractInPlace(VectorM4D v0,
VectorReadable4DType v1)
Subtract the vector
v1 from the vector v0,
saving the result to v0. |
String |
toString() |
public VectorM4D()
[0.0, 0.0, 0.0, 1.0].public VectorM4D(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 VectorM4D(VectorReadable4DType in_v)
v.in_v - The source vectorpublic static final VectorM4D absolute(VectorReadable4DType v, VectorM4D out)
v,
saving the result to out.v - The input vectorout - The output vector(abs v.x, abs v.y, abs v.z, abs.w)public static final VectorM4D absoluteInPlace(VectorM4D v)
v,
modifying the vector in-place.v - The input vector(abs v.x, abs v.y, abs v.z, abs v.w)public static final VectorM4D add(VectorReadable4DType v0, VectorReadable4DType v1, VectorM4D out)
v0 and
v1, saving the result to out.v0 - The left input vectorv1 - The right input vectorout - The output vector(v0.x + v1.x, v0.y + v1.y, v0.z + v1.z, v0.w + v1.w)public static final VectorM4D addInPlace(VectorM4D v0, VectorReadable4DType v1)
v0 and
v1, saving the result to v0.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 final VectorM4D addScaled(VectorReadable4DType v0, VectorReadable4DType v1, double r, VectorM4D out)
v0 and the
element-wise product of v1 and r, saving the
result to out.v0 - The left input vectorv1 - The right input vectorout - The output 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 final VectorM4D addScaledInPlace(VectorM4D v0, VectorReadable4DType v1, double r)
v0 and the
element-wise product of v1 and r, saving the
result to v0.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 final 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 if the vectors are almost equalAlmostEqualDouble.almostEqual(ContextRelative, double, double)public static final VectorM4D clamp(VectorReadable4DType v, double minimum, double maximum, VectorM4D out)
v to the range
[minimum .. maximum] inclusive, saving the result to
out.v - The input vectorminimum - The minimum allowed valuemaximum - The maximum allowed valueout - The output vectormaximum
and at least minimumpublic static final VectorM4D clampByVector(VectorReadable4DType v, VectorReadable4DType minimum, VectorReadable4DType maximum, VectorM4D out)
v to the inclusive range
given by the corresponding elements in minimum and
maximum, saving the result to out.v - The input vectorminimum - The vector containing the minimum acceptable valuesmaximum - The vector containing the maximum acceptable valuesout - The output vector(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 final VectorM4D clampByVectorInPlace(VectorM4D v, VectorReadable4DType minimum, VectorReadable4DType maximum)
v to the inclusive range
given by the corresponding elements in minimum and
maximum, saving the result to v.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 final VectorM4D clampInPlace(VectorM4D v, double minimum, double maximum)
v to the range
[minimum .. maximum] inclusive, saving the result to
v.v - The input vectorminimum - The minimum allowed valuemaximum - The maximum allowed valuemaximum
and at least minimum, in vpublic static final VectorM4D clampMaximum(VectorReadable4DType v, double maximum, VectorM4D out)
v to the range
[-Infinity .. maximum] inclusive, saving the result to
out.v - The input vectorout - The output vectormaximum - The maximum allowed valuemaximumpublic static final VectorM4D clampMaximumByVector(VectorReadable4DType v, VectorReadable4DType maximum, VectorM4D out)
v to the inclusive range
given by the corresponding elements in maximum, saving the
result to out.v - The input vectormaximum - The vector containing the maximum acceptable valuesout - The output vector(min(v.x, maximum.x), min(v.y, maximum.y), min(v.z, maximum.z), min(v.w, maximum.w))public static final VectorM4D clampMaximumByVectorInPlace(VectorM4D v, VectorReadable4DType maximum)
v to the inclusive range
given by the corresponding elements in maximum, saving the
result to v.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 final VectorM4D clampMaximumInPlace(VectorM4D v, double maximum)
v to the range
[-Infinity .. maximum] inclusive, saving the result to
v.v - The input vectormaximum - The maximum allowed valuemaximum
, in vpublic static final VectorM4D clampMinimum(VectorReadable4DType v, double minimum, VectorM4D out)
v to the range
[minimum .. Infinity] inclusive, saving the result to
out.v - The input vectorout - The output vectorminimum - The minimum allowed valueminimumpublic static final VectorM4D clampMinimumByVector(VectorReadable4DType v, VectorReadable4DType minimum, VectorM4D out)
v to the inclusive range
given by the corresponding elements in minimum, saving the
result to out.v - The input vectorout - The output 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 final VectorM4D clampMinimumByVectorInPlace(VectorM4D v, VectorReadable4DType minimum)
v to the inclusive range
given by the corresponding elements in minimum, saving the
result to v.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))
, in vpublic static final VectorM4D clampMinimumInPlace(VectorM4D v, double minimum)
v to the range
[minimum .. Infinity] inclusive, saving the result to
v.v - The input vectorminimum - The minimum allowed valueminimum, in v.public static final VectorWritable4DType copy(VectorReadable4DType input, VectorWritable4DType output)
input to the vector
output.input - The input vectoroutput - The output vectorpublic static final double distance(VectorReadable4DType v0, VectorReadable4DType v1)
v0 and
v1.v0 - The left input vectorv1 - The right input vectorpublic static final double dotProduct(VectorReadable4DType v0, VectorReadable4DType v1)
v0 and
v1.v0 - The left input vectorv1 - The right input vectorpublic static final VectorM4D interpolateLinear(VectorReadable4DType v0, VectorReadable4DType v1, double alpha, VectorM4D r)
v0 and v1 by the
amount alpha, saving the result to r.
The alpha parameter controls the degree of interpolation,
such that:
interpolateLinear(v0, v1, 0.0, r) -> r = v0interpolateLinear(v0, v1, 1.0, r) -> r = v1v0 - The left input vector.v1 - The right input vector.alpha - The interpolation value, between 0.0 and
1.0.r - The result vector.rpublic static final double magnitude(VectorReadable4DType v)
v.
Correspondingly, magnitude(normalize(v)) == 1.0.v - The input vectorpublic static final double magnitudeSquared(VectorReadable4DType v)
v.v - The input vectorpublic static final VectorM4D normalize(VectorReadable4DType v, VectorM4D out)
v but with
magnitude equal to 1.0 in out. The function
returns the zero vector iff the input is the zero vector.v - The input vectorout - The output vectorpublic static final VectorM4D normalizeInPlace(VectorM4D v)
v but with
magnitude equal to 1.0 in v. The function
returns the zero vector iff the input is the zero vector.v - The input vectorpublic static final com.io7m.jfunctional.Pair<VectorM4D,VectorM4D> 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 final void orthoNormalizeInPlace(VectorM4D v0, VectorM4D v1)
Orthonormalize and the vectors v0 and v1.
See GSP
v0 - The left vectorv1 - The right vectorpublic static final VectorM4D projection(VectorReadable4DType p, VectorReadable4DType q, VectorM4D r)
p onto the vector
q, saving the result in r.p - The left vectorq - The right vectorr - The output vector((dotProduct p q) / magnitudeSquared q) * qpublic static final VectorM4D scale(VectorReadable4DType v, double r, VectorM4D out)
v by the scalar r, saving the
result to out.v - The input vectorr - The scaling valueout - The output vector(v.x * r, v.y * r, v.z * r, v.w * r)public static final VectorM4D scaleInPlace(VectorM4D v, double r)
v by the scalar r, saving the
result to v.v - The input vectorr - The scaling value(v.x * r, v.y * r, v.z * r, v.w * r)public static final VectorM4D subtract(VectorReadable4DType v0, VectorReadable4DType v1, VectorM4D out)
v1 from the vector v0,
saving the result to out.v0 - The left input vectorv1 - The right input vectorout - The output vector(v0.x - v1.x, v0.y - v1.y, v0.z - v1.z, v0.w - v1.w)public static final VectorM4D subtractInPlace(VectorM4D v0, VectorReadable4DType v1)
v1 from the vector v0,
saving the result to v0.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 final void copyFrom2D(VectorReadable2DType in_v)
VectorWritable2DTypecopyFrom2D in interface VectorWritable2DTypein_v - The input vectorpublic final void copyFrom3D(VectorReadable3DType in_v)
VectorWritable3DTypecopyFrom3D in interface VectorWritable3DTypein_v - The input vectorpublic final void copyFrom4D(VectorReadable4DType in_v)
VectorWritable4DTypecopyFrom4D in interface VectorWritable4DTypein_v - The input vectorpublic final double getWD()
getWD in interface VectorReadable4DTypepublic final double getXD()
getXD in interface VectorReadable2DTypepublic final double getYD()
getYD in interface VectorReadable2DTypepublic final double getZD()
getZD in interface VectorReadable3DTypepublic final void set2D(double in_x,
double in_y)
VectorWritable2DTypex and y values of the current
vector.set2D in interface VectorWritable2DTypein_x - The new x value.in_y - The new y value.public final void set3D(double in_x,
double in_y,
double in_z)
VectorWritable3DTypex, y and z values
of the current vector.set3D in interface VectorWritable3DTypein_x - The new x value.in_y - The new y value.in_z - The new z value.public final void set4D(double in_x,
double in_y,
double in_z,
double in_w)
VectorWritable4DTypex, y, z and
w values of the current vector.set4D in interface VectorWritable4DTypein_x - The new x value.in_y - The new y value.in_z - The new z value.in_w - The new w value.public final void setWD(double in_w)
VectorWritable4DTypew value of the current vector.setWD in interface VectorWritable4DTypein_w - The new w value.public final void setXD(double in_x)
VectorWritable2DTypex value of the current vector.setXD in interface VectorWritable2DTypein_x - The new x value.public final void setYD(double in_y)
VectorWritable2DTypey value of the current vector.setYD in interface VectorWritable2DTypein_y - The new y value.public final void setZD(double in_z)
VectorWritable3DTypez value of the current vector.setZD in interface VectorWritable3DTypein_z - The new z value.Copyright © 2015 <code@io7m.com> http://io7m.com