Class InterpolationUtil

java.lang.Object
kr.toxicity.model.api.util.InterpolationUtil

@Internal public final class InterpolationUtil extends Object
Interpolation util
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    static interface 
    Vector point builder
    static final record 
    Vector result
  • Method Summary

    Modifier and Type
    Method
    Description
    static float
    alpha(float p0, float p1, float alpha)
    Finds alpha value
    static @NotNull org.joml.Vector3f
    bezier(float alpha, @NotNull org.joml.Vector3f start, @NotNull org.joml.Vector3f end, @NotNull org.joml.Vector3f bezierRightTime, @NotNull org.joml.Vector3f bezierRightValue, @NotNull org.joml.Vector3f bezierLeftTime, @NotNull org.joml.Vector3f bezierLeftValue)
    Interpolates two vectors as bezier
    static @NotNull AnimationKeyframe
    buildAnimation(@NotNull List<VectorPoint> position, @NotNull List<VectorPoint> rotation, @NotNull List<VectorPoint> scale, boolean rotationGlobal, @NotNull it.unimi.dsi.fastutil.floats.FloatSortedSet points)
    Builds animation keyframe
    static @NotNull org.joml.Vector3f
    catmull_rom(@NotNull org.joml.Vector3f p0, @NotNull org.joml.Vector3f p1, @NotNull org.joml.Vector3f p2, @NotNull org.joml.Vector3f p3, float t)
    Interpolates four vectors as catmull-rom.
    static void
    insertLerpFrame(@NotNull it.unimi.dsi.fastutil.floats.FloatSortedSet frames)
    Inserts lerp frame to given set
    static void
    insertLerpFrame(@NotNull it.unimi.dsi.fastutil.floats.FloatSortedSet frames, float frame)
    Inserts lerp frame to given set
    interpolatorFor(@NotNull List<VectorPoint> vectors)
    Creates interpolator
    static float
    lerp(float p0, float p1, float alpha)
    Lerps two point
    static @NotNull org.joml.Vector3f
    lerp(@NotNull org.joml.Vector3f p0, @NotNull org.joml.Vector3f p1, float alpha)
    Lerps two point
    static @NotNull org.joml.Vector3f
    lerp(@NotNull org.joml.Vector3f p0, @NotNull org.joml.Vector3f p1, float alpha, @NotNull org.joml.Vector3f dest)
    Lerps two point
    static float
    roundTime(float time)
    Rounds float to frame time

    Methods inherited from class Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Method Details

    • buildAnimation

      @NotNull public static @NotNull AnimationKeyframe buildAnimation(@NotNull @NotNull List<VectorPoint> position, @NotNull @NotNull List<VectorPoint> rotation, @NotNull @NotNull List<VectorPoint> scale, boolean rotationGlobal, @NotNull @NotNull it.unimi.dsi.fastutil.floats.FloatSortedSet points)
      Builds animation keyframe
      Parameters:
      position - position point
      rotation - rotation point
      scale - scale point
      rotationGlobal - rotation global
      points - keyframe time set
      Returns:
      animation keyframe
    • interpolatorFor

      @NotNull public static @NotNull InterpolationUtil.VectorPointBuilder interpolatorFor(@NotNull @NotNull List<VectorPoint> vectors)
      Creates interpolator
      Parameters:
      vectors - target vector list
      Returns:
      point builder
    • roundTime

      public static float roundTime(float time)
      Rounds float to frame time
      Parameters:
      time - time
      Returns:
      rounded time
    • insertLerpFrame

      public static void insertLerpFrame(@NotNull @NotNull it.unimi.dsi.fastutil.floats.FloatSortedSet frames)
      Inserts lerp frame to given set
      Parameters:
      frames - target set
    • insertLerpFrame

      public static void insertLerpFrame(@NotNull @NotNull it.unimi.dsi.fastutil.floats.FloatSortedSet frames, float frame)
      Inserts lerp frame to given set
      Parameters:
      frames - target set
      frame - frame
    • alpha

      public static float alpha(float p0, float p1, float alpha)
      Finds alpha value
      Parameters:
      p0 - p0
      p1 - p1
      alpha - target value between p0 and p1
      Returns:
      alpha (0..1)
    • lerp

      @NotNull public static @NotNull org.joml.Vector3f lerp(@NotNull @NotNull org.joml.Vector3f p0, @NotNull @NotNull org.joml.Vector3f p1, float alpha)
      Lerps two point
      Parameters:
      p0 - p0
      p1 - p1
      alpha - alpha
      Returns:
      lerped vector
    • lerp

      @NotNull public static @NotNull org.joml.Vector3f lerp(@NotNull @NotNull org.joml.Vector3f p0, @NotNull @NotNull org.joml.Vector3f p1, float alpha, @NotNull @NotNull org.joml.Vector3f dest)
      Lerps two point
      Parameters:
      p0 - p0
      p1 - p1
      alpha - alpha
      dest - destination vector
      Returns:
      lerped vector
    • lerp

      public static float lerp(float p0, float p1, float alpha)
      Lerps two point
      Parameters:
      p0 - p0
      p1 - p1
      alpha - alpha
      Returns:
      lerped point
    • bezier

      @NotNull public static @NotNull org.joml.Vector3f bezier(float alpha, @NotNull @NotNull org.joml.Vector3f start, @NotNull @NotNull org.joml.Vector3f end, @NotNull @NotNull org.joml.Vector3f bezierRightTime, @NotNull @NotNull org.joml.Vector3f bezierRightValue, @NotNull @NotNull org.joml.Vector3f bezierLeftTime, @NotNull @NotNull org.joml.Vector3f bezierLeftValue)
      Interpolates two vectors as bezier
      Parameters:
      alpha - alpha time
      start - start keyframe
      end - end keyframe
      bezierRightTime - bezier right time
      bezierRightValue - bezier right value
      bezierLeftTime - bezier left time
      bezierLeftValue - bezier left value
      Returns:
      interpolated vector
    • catmull_rom

      @NotNull public static @NotNull org.joml.Vector3f catmull_rom(@NotNull @NotNull org.joml.Vector3f p0, @NotNull @NotNull org.joml.Vector3f p1, @NotNull @NotNull org.joml.Vector3f p2, @NotNull @NotNull org.joml.Vector3f p3, float t)
      Interpolates four vectors as catmull-rom.
      Parameters:
      p0 - p0
      p1 - p1
      p2 - p2
      p3 - p3
      t - alpha
      Returns:
      interpolated vector