Package gaiasky.util.math
Class BSplined<T extends Vectord<T>>
- java.lang.Object
-
- gaiasky.util.math.BSplined<T>
-
-
Field Summary
Fields Modifier and Type Field Description boolean
continuous
T[]
controlPoints
int
degree
com.badlogic.gdx.utils.Array<T>
knots
int
spanCount
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description double
approximate(T v)
double
approximate(T in, int near)
double
approximate(T in, int start, int count)
double
approxLength(int samples)
static <T extends Vectord<T>>
Tcalculate(T out, double t, T[] points, int degree, boolean continuous, T tmp)
Calculates the n-degree b-spline value for the given position (t).static <T extends Vectord<T>>
Tcalculate(T out, int i, double u, T[] points, int degree, boolean continuous, T tmp)
Calculates the n-degree b-spline value for the given span (i) at the given position (u).static <T extends Vectord<T>>
Tcubic(T out, double t, T[] points, boolean continuous, T tmp)
Calculates the cubic b-spline value for the given position (t).static <T extends Vectord<T>>
Tcubic(T out, int i, double u, T[] points, boolean continuous, T tmp)
Calculates the cubic b-spline value for the given span (i) at the given position (u).static <T extends Vectord<T>>
Tcubic_derivative(T out, double t, T[] points, boolean continuous, T tmp)
Calculates the cubic b-spline derivative for the given position (t).static <T extends Vectord<T>>
Tcubic_derivative(T out, int i, double u, T[] points, boolean continuous, T tmp)
Calculates the cubic b-spline derivative for the given span (i) at the given position (u).static <T extends Vectord<T>>
Tderivative(T out, double t, T[] points, int degree, boolean continuous, T tmp)
Calculates the n-degree b-spline derivative for the given position (t).static <T extends Vectord<T>>
Tderivative(T out, int i, double u, T[] points, int degree, boolean continuous, T tmp)
Calculates the n-degree b-spline derivative for the given span (i) at the given position (u).T
derivativeAt(T out, double t)
T
derivativeAt(T out, int span, double u)
double
locate(T v)
int
nearest(T in)
int
nearest(T in, int start, int count)
BSplined
set(T[] controlPoints, int degree, boolean continuous)
T
valueAt(T out, double t)
T
valueAt(T out, int span, double u)
-
-
-
Constructor Detail
-
BSplined
public BSplined()
-
BSplined
public BSplined(T[] controlPoints, int degree, boolean continuous)
-
-
Method Detail
-
cubic
public static <T extends Vectord<T>> T cubic(T out, double t, T[] points, boolean continuous, T tmp)
Calculates the cubic b-spline value for the given position (t).- Parameters:
out
- The Vectord to set to the result.t
- The position (0<=t<=1) on the splinepoints
- The control pointscontinuous
- If true the b-spline restarts at 0 when reaching 1tmp
- A temporary vector used for the calculation- Returns:
- The value of out
-
cubic_derivative
public static <T extends Vectord<T>> T cubic_derivative(T out, double t, T[] points, boolean continuous, T tmp)
Calculates the cubic b-spline derivative for the given position (t).- Parameters:
out
- The Vectord to set to the result.t
- The position (0<=t<=1) on the splinepoints
- The control pointscontinuous
- If true the b-spline restarts at 0 when reaching 1tmp
- A temporary vector used for the calculation- Returns:
- The value of out
-
cubic
public static <T extends Vectord<T>> T cubic(T out, int i, double u, T[] points, boolean continuous, T tmp)
Calculates the cubic b-spline value for the given span (i) at the given position (u).- Parameters:
out
- The Vectord to set to the result.i
- The span (0<=iu
- The position (0<=u<=1) on the spanpoints
- The control pointscontinuous
- If true the b-spline restarts at 0 when reaching 1tmp
- A temporary vector used for the calculation- Returns:
- The value of out
-
cubic_derivative
public static <T extends Vectord<T>> T cubic_derivative(T out, int i, double u, T[] points, boolean continuous, T tmp)
Calculates the cubic b-spline derivative for the given span (i) at the given position (u).- Parameters:
out
- The Vectord to set to the result.i
- The span (0<=iu
- The position (0<=u<=1) on the spanpoints
- The control pointscontinuous
- If true the b-spline restarts at 0 when reaching 1tmp
- A temporary vector used for the calculation- Returns:
- The value of out
-
calculate
public static <T extends Vectord<T>> T calculate(T out, double t, T[] points, int degree, boolean continuous, T tmp)
Calculates the n-degree b-spline value for the given position (t).- Parameters:
out
- The Vectord to set to the result.t
- The position (0<=t<=1) on the splinepoints
- The control pointsdegree
- The degree of the b-splinecontinuous
- If true the b-spline restarts at 0 when reaching 1tmp
- A temporary vector used for the calculation- Returns:
- The value of out
-
derivative
public static <T extends Vectord<T>> T derivative(T out, double t, T[] points, int degree, boolean continuous, T tmp)
Calculates the n-degree b-spline derivative for the given position (t).- Parameters:
out
- The Vectord to set to the result.t
- The position (0<=t<=1) on the splinepoints
- The control pointsdegree
- The degree of the b-splinecontinuous
- If true the b-spline restarts at 0 when reaching 1tmp
- A temporary vector used for the calculation- Returns:
- The value of out
-
calculate
public static <T extends Vectord<T>> T calculate(T out, int i, double u, T[] points, int degree, boolean continuous, T tmp)
Calculates the n-degree b-spline value for the given span (i) at the given position (u).- Parameters:
out
- The Vectord to set to the result.i
- The span (0<=iu
- The position (0<=u<=1) on the spanpoints
- The control pointsdegree
- The degree of the b-splinecontinuous
- If true the b-spline restarts at 0 when reaching 1tmp
- A temporary vector used for the calculation- Returns:
- The value of out
-
derivative
public static <T extends Vectord<T>> T derivative(T out, int i, double u, T[] points, int degree, boolean continuous, T tmp)
Calculates the n-degree b-spline derivative for the given span (i) at the given position (u).- Parameters:
out
- The Vectord to set to the result.i
- The span (0<=iu
- The position (0<=u<=1) on the spanpoints
- The control pointsdegree
- The degree of the b-splinecontinuous
- If true the b-spline restarts at 0 when reaching 1tmp
- A temporary vector used for the calculation- Returns:
- The value of out
-
valueAt
public T valueAt(T out, int span, double u)
- Returns:
- The value of the spline at position u of the specified span
-
derivativeAt
public T derivativeAt(T out, double t)
- Specified by:
derivativeAt
in interfacePathd<T extends Vectord<T>>
-
derivativeAt
public T derivativeAt(T out, int span, double u)
- Returns:
- The derivative of the spline at position u of the specified span
-
nearest
public int nearest(T in)
- Returns:
- The span closest to the specified value
-
nearest
public int nearest(T in, int start, int count)
- Returns:
- The span closest to the specified value, restricting to the specified spans.
-
approximate
public double approximate(T v)
- Specified by:
approximate
in interfacePathd<T extends Vectord<T>>
- Returns:
- The approximated value (between 0 and 1) on the path which is closest to the specified value. Note that the
implementation of this method might be optimized for speed against precision, see
Pathd.locate(Object)
for a more precise (but more intensive) method.
-
approximate
public double approximate(T in, int start, int count)
-
approximate
public double approximate(T in, int near)
-
locate
public double locate(T v)
- Specified by:
locate
in interfacePathd<T extends Vectord<T>>
- Returns:
- The precise location (between 0 and 1) on the path which is closest to the specified value. Note that the
implementation of this method might be CPU intensive, see
Pathd.approximate(Object)
for a faster (but less precise) method.
-
approxLength
public double approxLength(int samples)
- Specified by:
approxLength
in interfacePathd<T extends Vectord<T>>
- Parameters:
samples
- The amount of divisions used to approximate length. Higher values will produce more precise results, but will be more CPU intensive.- Returns:
- An approximated length of the spline through sampling the curve and accumulating the euclidean distances between the sample points.
-
-