Releases: ecurtiss/CatRom
Releases · ecurtiss/CatRom
v1.0.0-rc1
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
andtension
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 jerkSolveTorsion()
: Solves for torsionSolveCFrameFrenet()
: Computes the Frenet frame as a CFrameSolveCFrameRMF()
: Computes a rotation-minimizing frame as a CFrame via the double reflection methodTransport()
: Sweeps a Vector3 or CFrame along the spline such that the result has been twisted minimally around the splineGetTransportInterpolant()
: A bulk version ofTransport()
SlerpNormals()
: Slerps between two vectors that are normal to the splineGetSlerpNormalsInterpolant()
: A bulk version ofSlerpNormals()
PrecomputeRMFs()
: Precomputes a discrete approximation of a moving rotation-minimizing frame along the splineSolveBulk()
: A helper method for doing the same computation at many uniformly-spaced times. Has better performance than writing a for loop manuallySolveBoundingBox()
: Returns an axis-aligned box that bounds the splineCreateTween()
: A wrapper around TweenService for moving objects along the spline
v0.6.0
Breaking changes
- Removed
SolveUniform()
methods in favor of aunitSpeed
boolean in theSolve()
methods. - Renamed
GetSplineFromT()
toGetSplineAtTime()
.
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)
whena
andb
were contained in the same interpolant. (h/t morosanu). - Updated code with new luau syntax and Roblox methods.
v0.5.0
Additions:
Uniform
methods for arc length parameterization have returned with faster math (see #3)- Calling
PrecomputeArcLengthParams()
can drastically speed upUniform
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
v0.4.1
v0.4.0
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
v0.3.0
- 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