Releases: toadative/CatRom
Releases · toadative/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->segmentsdomains->knotsalphaandtensionhave 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 aunitSpeedboolean 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)whenaandbwere contained in the same interpolant. (h/t morosanu). - Updated code with new luau syntax and Roblox methods.
v0.5.0
Additions:
Uniformmethods for arc length parameterization have returned with faster math (see #3)- Calling
PrecomputeArcLengthParams()can drastically speed upUniformcalls 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