Skip to content

Releases: ecurtiss/CatRom

v1.0.0-rc1

15 Jun 03:24
Compare
Choose a tag to compare

This is the first release candidate for v1.0.0, which indicates that CatRom is nearing a complete set of foundational features.

Breaking changes

  • GetSplineAtTime() -> GetSegmentAtTime()
  • PrecomputeArcLengthParams() -> PrecomputeUnitSpeedData()
  • SolveCFrame() -> SolveCFrameLookAlong()
  • SolveRotCFrame() -> SolveCFrameSquad()
  • splines -> segments
  • domains -> knots
  • alpha and tension have been removed

Improvements

  • PrecomputeUnitSpeedData() now uses Chebyshev interpolation to improve the speed and accuracy of the precompute
  • Spline instantiation is roughly 15% faster
  • Every method now has types

Additions

  • SolveJerk(): Solves for jerk
  • SolveTorsion(): Solves for torsion
  • SolveCFrameFrenet(): Computes the Frenet frame as a CFrame
  • SolveCFrameRMF(): Computes a rotation-minimizing frame as a CFrame via the double reflection method
  • Transport(): Sweeps a Vector3 or CFrame along the spline such that the result has been twisted minimally around the spline
  • GetTransportInterpolant(): A bulk version of Transport()
  • SlerpNormals(): Slerps between two vectors that are normal to the spline
  • GetSlerpNormalsInterpolant(): A bulk version of SlerpNormals()
  • PrecomputeRMFs(): Precomputes a discrete approximation of a moving rotation-minimizing frame along the spline
  • SolveBulk(): A helper method for doing the same computation at many uniformly-spaced times. Has better performance than writing a for loop manually
  • SolveBoundingBox(): Returns an axis-aligned box that bounds the spline
  • CreateTween(): A wrapper around TweenService for moving objects along the spline

v0.6.0

25 May 04:06
Compare
Choose a tag to compare

Breaking changes

  • Removed SolveUniform() methods in favor of a unitSpeed boolean in the Solve() methods.
  • Renamed GetSplineFromT() to GetSplineAtTime().

Fixes

  • Fixed a typo that was causing the arc length parametrization LUT to never be used, making PrecomputeArcLengthParams() useless.
  • Fixed an issue with SolveLength(a, b) when a and b were contained in the same interpolant. (h/t morosanu).
  • Updated code with new luau syntax and Roblox methods.

v0.5.0

02 Apr 09:04
Compare
Choose a tag to compare

Additions:

  • Uniform methods for arc length parameterization have returned with faster math (see #3)
  • Calling PrecomputeArcLengthParams() can drastically speed up Uniform calls at a cost to accuracy
  • Added a few missing static types in init.lua

Improvements:

  • SolveLength() is faster and more accurate (see #2)

v0.4.2

27 Feb 03:42
Compare
Choose a tag to compare

This version fixes CatRom:SolveLength() returning incorrect results.

v0.4.1

07 Feb 00:35
Compare
Choose a tag to compare

This release brings the version number up to date with the version on Wally. Nothing else has changed.

v0.4.0

06 Feb 07:12
Compare
Choose a tag to compare

Improvements:

  • Supports CatRoms with only 1 and 2 points
  • Handles equal consecutive points more gracefully
  • Simplified API
  • SolveRotCFrame() acts more like a slerp
  • Significantly faster instantiation
  • Faster calculations across the board

BREAKING CHANGES:

  • Chain and Spline have been combined into a single CatRom class
  • Uniform methods have been removed. These will return when I have faster math for them.

v0.3.1

31 Oct 23:37
Compare
Choose a tag to compare

Fix overlapping points throwing errors.

v0.3.0

18 Sep 06:24
Compare
Choose a tag to compare
  • Fixed flickering caused by failing to find a spline along a chain
  • Renamed "Arc" methods to "Uniform"
  • Removed "Unit" from SolveUnitTangent, SolveUnitNormal, SolveUnitBinormal, and their Uniform counterparts
  • Added scripts to generate Uniform methods and Chain methods

v0.2.0

10 Sep 03:05
Compare
Choose a tag to compare
  • Refactored the module into multiple files
  • Removed submodules
  • Renamed module and repo from "CatmullRomSpline" to "CatRom"

v0.1.0

05 Mar 05:48
Compare
Choose a tag to compare

It technically works. Don't forget to download t as well.