Package arc.math.geom
Class CatmullRomSpline<T extends Vector<T>>
java.lang.Object
arc.math.geom.CatmullRomSpline<T>
- All Implemented Interfaces:
Path<T>
-
Field Summary
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionfloat
approximate
(T v) float
approximate
(T in, int near) float
approximate
(T in, int start, int count) float
approxLength
(int samples) static <T extends Vector<T>>
Tcalculate
(T out, float t, T[] points, boolean continuous, T tmp) Calculates the catmullrom value for the given position (t).static <T extends Vector<T>>
Tcalculate
(T out, int i, float u, T[] points, boolean continuous, T tmp) Calculates the catmullrom value for the given span (i) at the given position (u).static <T extends Vector<T>>
Tderivative
(T out, float t, T[] points, boolean continuous, T tmp) Calculates the derivative of the catmullrom spline for the given position (t).static <T extends Vector<T>>
Tderivative
(T out, int i, float u, T[] points, boolean continuous, T tmp) Calculates the derivative of the catmullrom spline for the given span (i) at the given position (u).derivativeAt
(T out, float t) derivativeAt
(T out, int span, float u) float
int
int
-
Field Details
-
controlPoints
-
continuous
public boolean continuous -
spanCount
public int spanCount
-
-
Constructor Details
-
CatmullRomSpline
public CatmullRomSpline() -
CatmullRomSpline
-
-
Method Details
-
calculate
public static <T extends Vector<T>> T calculate(T out, float t, T[] points, boolean continuous, T tmp) Calculates the catmullrom value for the given position (t).- Parameters:
out
- The Vector 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
-
calculate
public static <T extends Vector<T>> T calculate(T out, int i, float u, T[] points, boolean continuous, T tmp) Calculates the catmullrom value for the given span (i) at the given position (u).- Parameters:
out
- The Vector to set to the result.i
- The span (0<=i<spanCount) spanCount = continuous ? points.length : points.length - degreeu
- 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
-
derivative
public static <T extends Vector<T>> T derivative(T out, float t, T[] points, boolean continuous, T tmp) Calculates the derivative of the catmullrom spline for the given position (t).- Parameters:
out
- The Vector 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
-
derivative
public static <T extends Vector<T>> T derivative(T out, int i, float u, T[] points, boolean continuous, T tmp) Calculates the derivative of the catmullrom spline for the given span (i) at the given position (u).- Parameters:
out
- The Vector to set to the result.i
- The span (0<=i<spanCount) spanCount = continuous ? points.length : points.length - degreeu
- 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
-
set
-
valueAt
-
valueAt
- Returns:
- The value of the spline at position u of the specified span
-
derivativeAt
- Specified by:
derivativeAt
in interfacePath<T extends Vector<T>>
-
derivativeAt
- Returns:
- The derivative of the spline at position u of the specified span
-
nearest
- Returns:
- The span closest to the specified value
-
nearest
- Returns:
- The span closest to the specified value, restricting to the specified spans.
-
approximate
- Specified by:
approximate
in interfacePath<T extends Vector<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
Path.locate(Object)
for a more precise (but more intensive) method.
-
approximate
-
approximate
-
locate
-
approxLength
public float approxLength(int samples) - Specified by:
approxLength
in interfacePath<T extends Vector<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.
-