Class PVectors2D
java.lang.Object
com.io7m.jtensors.core.parameterized.vectors.PVectors2D
Functions over PVector2D 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 TypeMethodDescriptionstatic <T> PVector2D<T> Calculate the absolute ofv0.static <T> PVector2D<T> Addv0tov1.static <T> PVector2D<T> Addv0tov1 * r.static <T> doubleCalculate the angle between the vectorsv0andv1in radians.static <T> PVector2D<T> Clamp the values invbyv_minandv_max.static <T> doubleCalculate the distance betweenv0andv1.static <T> doubledotProduct(PVector2D<T> v0, PVector2D<T> v1) Calculate the scalar product of the vectorsv0andv1.static <T> PVector2D<T> interpolateBilinear(PVector2D<T> x0y0, PVector2D<T> x1y0, PVector2D<T> x0y1, PVector2D<T> x1y1, double px, double py) Bilinearly interpolate betweenx0y0,x1y0,x0y1,x1y1.static <T> PVector2D<T> interpolateLinear(PVector2D<T> v0, PVector2D<T> v1, double alpha) Linearly interpolate betweenv0andv1by the amountalpha.static <T> doubleCalculate the magnitude of the vectorv0.static <T> doublemagnitudeSquared(PVector2D<T> v0) Calculate the squared magnitude of the vectorv0.static <T> PVector2D<T> Multiplyv0byv1.static <T> PVector2D<T> Calculate the negation ofv.static <T> PVector2D<T> Normalize the vectorv0.static <T> PVector2D<T> Scalev0byr.static <T> PVector2D<T> Subtractv1fromv0.static <A> PVector2D<A> static <A> Vector2DtoUnparameterized(PVector2D<A> v) static <T> PVector2D<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)
-
add
Addv0tov1.- 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)
-
multiply
Multiplyv0byv1.- 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)- Since:
- 10.0.0
-
addScaled
Addv0tov1 * 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))
-
angle
Calculate the angle between the vectorsv0andv1in radians.- Type Parameters:
T- A phantom type parameter * @return The angle between the two vectors, in radians.- Parameters:
v0- The left input vectorv1- The right input vector
-
clamp
Clamp the values invbyv_minandv_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()))
-
distance
Calculate the distance betweenv0andv1.- Type Parameters:
T- A phantom type parameter * @param v0 The left vector- Parameters:
v1- The right vector- Returns:
- The distance between
v0andv1.
-
dotProduct
Calculate the scalar product of the vectorsv0andv1.- 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
v0andv1by the amountalpha.The
alphaparameter controls the degree of interpolation, such that:interpolateLinear(v0, v1, 0.0) = v0interpolateLinear(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> PVector2D<T> interpolateBilinear(PVector2D<T> x0y0, PVector2D<T> x1y0, PVector2D<T> x0y1, PVector2D<T> x1y1, double px, double py) Bilinearly interpolate between
x0y0,x1y0,x0y1,x1y1.The
pxandpyparameters control the degree of interpolation, such that:interpolateBilinear(x0y0, x1y0, x0y1, x1y1, 0.0, 0.0) = x0y0interpolateBilinear(x0y0, x1y0, x0y1, x1y1, 1.0, 0.0) = x1y0interpolateBilinear(x0y0, x1y0, x0y1, x1y1, 0.0, 1.0) = x0y1interpolateBilinear(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)
-
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
Scalev0byr.- Type Parameters:
T- A phantom type parameter * @param v0 The left vector- Parameters:
r- The scaling value- Returns:
(v0.x * r, v0.y * r)
-
subtract
Subtractv1fromv0.- 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)
-
zero
The zero vector.- Type Parameters:
T- A phantom type parameter- Returns:
(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
mbut 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
vwith type parameters
-