Class PVectors3D
java.lang.Object
com.io7m.jtensors.core.parameterized.vectors.PVectors3D
public final class PVectors3D
extends java.lang.Object
Functions over PVector3D
values.
See "Mathematics for 3D Game Programming and Computer Graphics" 2nd Ed for the derivations of most of the code in this class (ISBN: 1-58450-277-0).
- Since:
- 8.0.0
-
Method Summary
Modifier and Type Method Description static <T> PVector3D<T>
absolute(PVector3D<T> v0)
Calculate the absolute ofv0
.static <T> PVector3D<T>
add(PVector3D<T> v0, PVector3D<T> v1)
Addv0
tov1
.static <T> PVector3D<T>
addScaled(PVector3D<T> v0, PVector3D<T> v1, double r)
Addv0
tov1 * r
.static <T> PVector3D<T>
clamp(PVector3D<T> v, PVector3D<T> v_min, PVector3D<T> v_max)
Clamp the values inv
byv_min
andv_max
.static <T> PVector3D<T>
crossProduct(PVector3D<T> v0, PVector3D<T> v1)
Calculate the cross product of the vectorsv0
andv1
.static <T> double
distance(PVector3D<T> v0, PVector3D<T> v1)
Calculate the distance betweenv0
andv1
.static <T> double
dotProduct(PVector3D<T> v0, PVector3D<T> v1)
Calculate the scalar product of the vectorsv0
andv1
.static <T> PVector3D<T>
interpolateBilinear(PVector3D<T> x0y0, PVector3D<T> x1y0, PVector3D<T> x0y1, PVector3D<T> x1y1, double px, double py)
Bilinearly interpolate betweenx0y0
,x1y0
,x0y1
,x1y1
.static <T> PVector3D<T>
interpolateLinear(PVector3D<T> v0, PVector3D<T> v1, double alpha)
Linearly interpolate betweenv0
andv1
by the amountalpha
.static <T> double
magnitude(PVector3D<T> v0)
Calculate the magnitude of the vectorv0
.static <T> double
magnitudeSquared(PVector3D<T> v0)
Calculate the squared magnitude of the vectorv0
.static <T> PVector3D<T>
multiply(PVector3D<T> v0, PVector3D<T> v1)
Multiplyv0
byv1
.static <T> PVector3D<T>
negate(PVector3D<T> v)
Calculate the negation ofv
.static <T> PVector3D<T>
normalize(PVector3D<T> v0)
Normalize the vectorv0
.static <T> PVector3D<T>
scale(PVector3D<T> v0, double r)
Scalev0
byr
.static <T> PVector3D<T>
subtract(PVector3D<T> v0, PVector3D<T> v1)
Subtractv1
fromv0
.static <A> PVector3D<A>
toParameterized(Vector3D v)
static <A> Vector3D
toUnparameterized(PVector3D<A> v)
static <T> PVector3D<T>
zero()
The zero vector.
-
Method Details
-
absolute
Calculate the absolute ofv0
.- Type Parameters:
T
- A phantom type parameter * @param v0 The vector- Returns:
(abs v0.x, abs v0.y, abs v0.z)
-
add
Addv0
tov1
.- Type Parameters:
T
- A phantom type parameter * @param v0 The left vector- Parameters:
v1
- The right vector- Returns:
(v0.x + v1.x, v0.y + v1.y, v0.z + v1.z)
-
multiply
Multiplyv0
byv1
.- Type Parameters:
T
- A phantom type parameter * @param v0 The left vector- Parameters:
v1
- The right vector- Returns:
(v0.x * v1.x, v0.y * v1.y, v0.z * v1.z)
- Since:
- 10.0.0
-
addScaled
Addv0
tov1 * r
.- Type Parameters:
T
- A phantom type parameter * @param v0 The left vector- Parameters:
v1
- The right vectorr
- The scaling value- Returns:
(v0.x + (v1.x * r), v0.y + (v1.y * r), v0.z + (v1.z * r))
-
clamp
Clamp the values inv
byv_min
andv_max
.- Type Parameters:
T
- A phantom type parameter * @param v The source vector- Parameters:
v_min
- The minimum vectorv_max
- The maximum vector- Returns:
(max(min(v.x, v_max.x()), v_min.x()), max(min(v.y, v_max.y()), v_min.y()), max(min(v.z, v_max.z()), v_min.z()))
-
crossProduct
Calculate the cross product of the vectorsv0
andv1
.- Type Parameters:
T
- A phantom type parameter * @param v0 The left vector- Parameters:
v1
- The right vector- Returns:
- The cross product of the two vectors
-
distance
Calculate the distance betweenv0
andv1
.- Type Parameters:
T
- A phantom type parameter * @param v0 The left vector- Parameters:
v1
- The right vector- Returns:
- The distance between
v0
andv1
.
-
dotProduct
Calculate the scalar product of the vectorsv0
andv1
.- Type Parameters:
T
- A phantom type parameter * @param v0 The left vector- Parameters:
v1
- The right vector- Returns:
- The scalar product of the two vectors
-
interpolateLinear
Linearly interpolate between
v0
andv1
by the amountalpha
.The
alpha
parameter controls the degree of interpolation, such that:interpolateLinear(v0, v1, 0.0) = v0
interpolateLinear(v0, v1, 1.0) = v1
- Type Parameters:
T
- A phantom type parameter * @return((1 - alpha) * v0) + (alpha * v1)
- Parameters:
v0
- The left input vectorv1
- The right input vectoralpha
- The interpolation value in the range[0, 1]
-
interpolateBilinear
public static <T> PVector3D<T> interpolateBilinear(PVector3D<T> x0y0, PVector3D<T> x1y0, PVector3D<T> x0y1, PVector3D<T> x1y1, double px, double py)Bilinearly interpolate between
x0y0
,x1y0
,x0y1
,x1y1
.The
px
andpy
parameters control the degree of interpolation, such that:interpolateBilinear(x0y0, x1y0, x0y1, x1y1, 0.0, 0.0) = x0y0
interpolateBilinear(x0y0, x1y0, x0y1, x1y1, 1.0, 0.0) = x1y0
interpolateBilinear(x0y0, x1y0, x0y1, x1y1, 0.0, 1.0) = x0y1
interpolateBilinear(x0y0, x1y0, x0y1, x1y1, 1.0, 1.0) = x1y1
- Type Parameters:
T
- A phantom type parameter * @return The bilinearly interpolated value- Parameters:
x0y0
- The top left input vectorx1y0
- The top right input vectorx0y1
- The bottom left input vectorx1y1
- The bottom right input vectorpx
- The X interpolation value in the range[0, 1]
py
- The Y interpolation value in the range[0, 1]
-
magnitudeSquared
Calculate the squared magnitude of the vectorv0
.- Type Parameters:
T
- A phantom type parameter * @param v0 The vector- Returns:
- The squared magnitude of the vector
-
magnitude
Calculate the magnitude of the vectorv0
.- Type Parameters:
T
- A phantom type parameter * @param v0 The vector- Returns:
- The magnitude of the vector
-
negate
Calculate the negation ofv
.- Type Parameters:
T
- A phantom type parameter * @param v The vector- Returns:
(-v.x, -v.y, -v.z)
-
normalize
Normalize the vector
v0
.If the magnitude of the vector is zero, the function returns
v0
.- Type Parameters:
T
- A phantom type parameter * @param v0 The vector- Returns:
- A normalized copy of
v0
-
scale
Scalev0
byr
.- Type Parameters:
T
- A phantom type parameter * @param v0 The left vector- Parameters:
r
- The scaling value- Returns:
(v0.x * r, v0.y * r, v0.z * r)
-
subtract
Subtractv1
fromv0
.- Type Parameters:
T
- A phantom type parameter * @param v0 The left vector- Parameters:
v1
- The right vector- Returns:
(v0.x - v1.x, v0.y - v1.y, v0.z - v1.z)
-
zero
The zero vector.- Type Parameters:
T
- A phantom type parameter- Returns:
(0, 0, 0)
-
toUnparameterized
- Type Parameters:
A
- A phantom type parameter (possibly representing a coordinate system)- Parameters:
v
- The input vector- Returns:
- A vector equal to
m
but without type parameters
-
toParameterized
- Type Parameters:
A
- A phantom type parameter (possibly representing a coordinate system)- Parameters:
v
- The input vector- Returns:
- A vector equal to
v
with type parameters
-