MoonTools.Curve/README.md

32 lines
1.0 KiB
Markdown

# MoonTools.Curve
[![NuGet Badge](https://buildstats.info/nuget/MoonTools.Curve)](https://www.nuget.org/packages/MoonTools.Curve/)
[![Build Status](https://drone.moonside.games/api/badges/MoonsideGames/MoonTools.Curve/status.svg)](https://drone.moonside.games/MoonsideGames/MoonTools.Curve)
Efficiently implements quadratic and cubic Bezier curves in 2D and 3D using immutable structs.
## Example
```cs
var myCurve = new CubicBezierCurve3D(
new Vector3(-4, -4, -3),
new Vector3(-2, 4, 0),
new Vector3(2, -4, 3),
new Vector3(4, 4, 0)
);
myCurve.Point(0.5f); // => Vector3(0, 0, 0.75f)
myCurve.Point(3, 2, 4); // => Vector3(0, 0, 0.75f)
myCurve.Velocity(0.5f); // => Vector3(9, 0, 4.5f)
myCurve.Velocity(3, 2, 4); // => Vector3(9, 0, 4.5f)
// curve values can be calculated statically as well
CubicBezierCurve3D.Point(
new Vector3(-4, -4, -3),
new Vector3(-2, 4, 0),
new Vector3(2, -4, 3),
new Vector3(4, 4, 0),
0.5f
); // => Vector3(0, 0, 0.75f)
```