T - A phantom type parameter.@Immutable public final class PVectorI3F<T> extends Object implements PVectorReadable3FType<T>
A three-dimensional immutable vector type with float elements.
Values of this type are immutable and can therefore be safely accessed from multiple threads.
| Constructor and Description |
|---|
PVectorI3F()
Default constructor, initializing the vector with values
[0.0, 0.0,
0.0]. |
PVectorI3F(float in_x,
float in_y,
float in_z)
Construct a vector initialized with the given values.
|
PVectorI3F(PVectorReadable3FType<T> in_v)
Construct a vector initialized with the values given in the vector
in_v. |
| Modifier and Type | Method and Description |
|---|---|
static <T> PVectorI3F<T> |
absolute(PVectorReadable3FType<T> v)
Calculate the absolute value of the vector
v. |
static <T> PVectorI3F<T> |
add(PVectorReadable3FType<T> v0,
PVectorReadable3FType<T> v1)
Calculate the element-wise sum of the vectors
v0 and v1. |
static <T> PVectorI3F<T> |
addScaled(PVectorReadable3FType<T> v0,
PVectorReadable3FType<T> v1,
float r)
Calculate the element-wise sum of the vectors
v0 and the
element-wise product of v1 and r. |
static <T> boolean |
almostEqual(com.io7m.jequality.AlmostEqualFloat.ContextRelative context,
PVectorReadable3FType<T> va,
PVectorReadable3FType<T> vb)
Determine whether or not the vectors
va and vb are equal to
within the degree of error given in context. |
static <T> PVectorI3F<T> |
clamp(PVectorReadable3FType<T> v,
float minimum,
float maximum)
Clamp the elements of the vector
v to the range {@code [minimum .. |
static <T> PVectorI3F<T> |
clampByPVector(PVectorReadable3FType<T> v,
PVectorReadable3FType<T> minimum,
PVectorReadable3FType<T> maximum)
Clamp the elements of the vector
v to the inclusive range given by
the corresponding elements in minimum and maximum. |
static <T> PVectorI3F<T> |
clampMaximum(PVectorReadable3FType<T> v,
float maximum)
Clamp the elements of the vector
v to the range {@code [-Infinity
.. |
static <T> PVectorI3F<T> |
clampMaximumByPVector(PVectorReadable3FType<T> v,
PVectorReadable3FType<T> maximum)
Clamp the elements of the vector
v to the inclusive range given by
the corresponding elements in maximum. |
static <T> PVectorI3F<T> |
clampMinimum(PVectorReadable3FType<T> v,
float minimum)
Clamp the elements of the vector
v to the range {@code [minimum .. |
static <T> PVectorI3F<T> |
clampMinimumByPVector(PVectorReadable3FType<T> v,
PVectorReadable3FType<T> minimum)
Clamp the elements of the vector
v to the inclusive range given by
the corresponding elements in minimum. |
static <T> PVectorI3F<T> |
crossProduct(PVectorReadable3FType<T> v0,
PVectorReadable3FType<T> v1)
Calculate the cross product of the vectors
v0 and v1. |
static <T> float |
distance(PVectorReadable3FType<T> v0,
PVectorReadable3FType<T> v1)
Calculate the distance between the two vectors
v0 and v1. |
static <T> float |
dotProduct(PVectorReadable3FType<T> v0,
PVectorReadable3FType<T> v1)
Calculate the scalar product of the vectors
v0 and v1. |
boolean |
equals(Object obj) |
float |
getXF() |
float |
getYF() |
float |
getZF() |
int |
hashCode() |
static <T> PVectorI3F<T> |
interpolateLinear(PVectorReadable3FType<T> v0,
PVectorReadable3FType<T> v1,
float alpha)
Linearly interpolate between
v0 and v1 by the amount alpha. |
static <T> float |
magnitude(PVectorReadable3FType<T> v)
Calculate the magnitude of the vector
v. |
static <T> float |
magnitudeSquared(PVectorReadable3FType<T> v)
Calculate the squared magnitude of the vector
v. |
static <T> PVectorI3F<T> |
normalize(PVectorReadable3FType<T> v)
Normalize the vector
v, preserving its direction but reducing it to
unit length. |
static <T> com.io7m.jfunctional.Pair<PVectorI3F<T>,PVectorI3F<T>> |
orthoNormalize(PVectorReadable3FType<T> v0,
PVectorReadable3FType<T> v1)
Orthonormalize and return the vectors
v0 and v1 . |
static <T> PVectorI3F<T> |
projection(PVectorReadable3FType<T> p,
PVectorReadable3FType<T> q)
Calculate the projection of the vector
p onto the vector q. |
static <T> PVectorI3F<T> |
scale(PVectorReadable3FType<T> v,
float r)
Scale the vector
v by the scalar r. |
static <T> PVectorI3F<T> |
subtract(PVectorReadable3FType<T> v0,
PVectorReadable3FType<T> v1)
Subtract the vector
v1 from the vector v0. |
String |
toString() |
static <T> PVectorI3F<T> |
zero() |
public PVectorI3F()
[0.0, 0.0,
0.0].public PVectorI3F(float in_x,
float in_y,
float in_z)
in_x - The x valuein_y - The y valuein_z - The z valuepublic PVectorI3F(PVectorReadable3FType<T> in_v)
in_v.in_v - The input vector.public static <T> PVectorI3F<T> absolute(PVectorReadable3FType<T> v)
v.T - A phantom type parameter.v - The input vector(abs v.getXF(), abs v.getYF(), abs v.getZF())public static <T> PVectorI3F<T> add(PVectorReadable3FType<T> v0, PVectorReadable3FType<T> v1)
v0 and v1.T - A phantom type parameter.v0 - The left input vectorv1 - The right input vector(v0.getXF() + v1.getXF(), v0.getYF() + v1.getYF(),
v0.getZF() + v1.getZF())public static <T> PVectorI3F<T> addScaled(PVectorReadable3FType<T> v0, PVectorReadable3FType<T> v1, float r)
v0 and the
element-wise product of v1 and r.T - A phantom type parameter.v0 - The left input vectorv1 - The right input vectorr - The scaling value(v0.getXF() + (v1.getXF() * r), v0.getYF() + (v1.getYF() *
r), v0.getZF() + (v1.getZF() * r))public static <T> boolean almostEqual(com.io7m.jequality.AlmostEqualFloat.ContextRelative context,
PVectorReadable3FType<T> va,
PVectorReadable3FType<T> vb)
va and vb are equal to
within the degree of error given in context.T - A phantom type parameter.context - The equality contextva - The left input vectorvb - The right input vectortrue iff the vectors are almost equal.AlmostEqualFloat.almostEqual(AlmostEqualFloat.ContextRelative, float,
float)public static <T> PVectorI3F<T> clamp(PVectorReadable3FType<T> v, float minimum, float maximum)
v to the range [minimum ..
maximum] inclusive.T - A phantom type parameter.v - The input vectorminimum - The minimum allowed valuemaximum - The maximum allowed valuemaximum and at
least minimum.public static <T> PVectorI3F<T> clampByPVector(PVectorReadable3FType<T> v, PVectorReadable3FType<T> minimum, PVectorReadable3FType<T> maximum)
v to the inclusive range given by
the corresponding elements in minimum and maximum.T - A phantom type parameter.v - The input vectorminimum - The vector containing the minimum acceptable valuesmaximum - The vector containing the maximum acceptable values( min(max(v.getXF(), minimum.getXF()), maximum.getXF()),
min(max(v.getYF(), minimum.getYF()), maximum.getYF()), min(max(v.getZF(),
minimum.getZF()), maximum.getZF()) )public static <T> PVectorI3F<T> clampMaximum(PVectorReadable3FType<T> v, float maximum)
v to the range [-Infinity
.. maximum] inclusive.T - A phantom type parameter.v - The input vectormaximum - The maximum allowed valuemaximumpublic static <T> PVectorI3F<T> clampMaximumByPVector(PVectorReadable3FType<T> v, PVectorReadable3FType<T> maximum)
v to the inclusive range given by
the corresponding elements in maximum.T - A phantom type parameter.v - The input vectormaximum - The vector containing the maximum acceptable values(min(v.getXF(), maximum.getXF()), min(v.getYF(),
maximum.getYF()), min(v.getZF(), maximum.getZF()))public static <T> PVectorI3F<T> clampMinimum(PVectorReadable3FType<T> v, float minimum)
v to the range [minimum ..
Infinity] inclusive.T - A phantom type parameter.v - The input vectorminimum - The minimum allowed valueminimumpublic static <T> PVectorI3F<T> clampMinimumByPVector(PVectorReadable3FType<T> v, PVectorReadable3FType<T> minimum)
v to the inclusive range given by
the corresponding elements in minimum.T - A phantom type parameter.v - The input vectorminimum - The vector containing the minimum acceptable values(max(v.getXF(), minimum.getXF()), max(v.getYF(),
minimum.getYF()), max(v.getZF(), minimum.getZF()))public static <T> PVectorI3F<T> crossProduct(PVectorReadable3FType<T> v0, PVectorReadable3FType<T> v1)
v0 and v1. The
result is a vector perpendicular to both vectors.T - A phantom type parameter.v0 - The left input vectorv1 - The right input vectorv0 and v1public static <T> float distance(PVectorReadable3FType<T> v0, PVectorReadable3FType<T> v1)
v0 and v1.T - A phantom type parameter.v0 - The left input vectorv1 - The right input vectorpublic static <T> float dotProduct(PVectorReadable3FType<T> v0, PVectorReadable3FType<T> v1)
v0 and v1.T - A phantom type parameter.v0 - The left input vectorv1 - The right input vectorpublic static <T> PVectorI3F<T> interpolateLinear(PVectorReadable3FType<T> v0, PVectorReadable3FType<T> v1, float 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) = v1T - A phantom type parameter.v0 - 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 <T> float magnitude(PVectorReadable3FType<T> v)
v.
Correspondingly, magnitude(normalize(v)) == 1.0.T - A phantom type parameter.v - The input vectorpublic static <T> float magnitudeSquared(PVectorReadable3FType<T> v)
v.T - A phantom type parameter.v - The input vectorpublic static <T> PVectorI3F<T> normalize(PVectorReadable3FType<T> v)
v, preserving its direction but reducing it to
unit length.T - A phantom type parameter.v - The input vectorv but with magnitude
equal to 1.0public static <T> com.io7m.jfunctional.Pair<PVectorI3F<T>,PVectorI3F<T>> orthoNormalize(PVectorReadable3FType<T> v0, PVectorReadable3FType<T> v1)
Orthonormalize and return the vectors v0 and v1 .
See GSP
T - A phantom type parameter.v0 - The left vectorv1 - The right vector(v0, v1), orthonormalized.public static <T> PVectorI3F<T> projection(PVectorReadable3FType<T> p, PVectorReadable3FType<T> q)
p onto the vector q.T - A phantom type parameter.p - The left vectorq - The right vector((dotProduct p q) / magnitudeSquared q) * qpublic static <T> PVectorI3F<T> scale(PVectorReadable3FType<T> v, float r)
v by the scalar r.T - A phantom type parameter.v - The input vectorr - The scaling value(v.getXF() * r, v.getYF() * r, v.getZF() * r)public static <T> PVectorI3F<T> subtract(PVectorReadable3FType<T> v0, PVectorReadable3FType<T> v1)
v1 from the vector v0.T - A phantom type parameter.v0 - The left input vectorv1 - The right input vector(v0.getXF() - v1.getXF(), v0.getYF() - v1.getYF(),
v0.getZF() - v1.getZF())public static <T> PVectorI3F<T> zero()
T - A phantom type parameter.public float getXF()
getXF in interface VectorReadable2FTypepublic float getYF()
getYF in interface VectorReadable2FTypepublic float getZF()
getZF in interface VectorReadable3FTypeCopyright © 2016 <code@io7m.com> http://io7m.com