Skip to content
FutureBlitz

    Install

    Import std.math.curves

    std.math.curves

    Curves and splines in 2D and 3D: a point t of the way along a quadratic or cubic Bezier, a Hermite curve, a Catmull-Rom segment, or a uniform cubic B-spline segment; and Curve2 and Curve3, which join a run of points into one curve, through them or near them, and go along it by its length, as a path's followers and its evenly spaced fence posts need.

    std/math/curves.fb

    Types

    Curve2 class

    Public Class Curve2

    A curve in 2D from a Function of t from 0 to 1, which it goes along by length too, from a table of samples' lengths, its straight lines' between them, so more samples follow its bends closer.

    std/math/curves.fb, line 171

    • @PanicsAtCaller Public New(point: Func(Float): Vec2, samples: Int = 256) constructor #

      The curve point gives for t from 0 to 1, measured at samples places along it. Fewer than one sample panics.

    • @PanicsAtCaller Public Static Method CatmullRom(points: Vec2[], closed: Bool = False, samples: Int = 64): Curve2 static method #

      The Catmull-Rom spline through the points, each of them on it, around to the first when closed, measured at samples places along each segment. Fewer than two points, or than one sample, panics.

    • @PanicsAtCaller Public Static Method BSpline(points: Vec2[], closed: Bool = False, samples: Int = 64): Curve2 static method #

      The uniform cubic B-spline the points shape, near them rather than through them: an open one starts and ends at its ends, and a closed one goes around. It's measured at samples places along each segment. Fewer than two points, or than one sample, panics.

    • @PanicsAtCaller Public Static Method Bezier(points: Vec2[], samples: Int = 64): Curve2 static method #

      The cubic Beziers one after another, each from the last one's end: a start, then two control points and an end for each, so 3n + 1 points in all, measured at samples places along each. Any other count of points, or fewer than one sample, panics.

    • Public Property Length: Float property #

      How long the curve is, as its samples measure it.

    • @PanicsAtCaller Public Method PointAt(t: Float): Vec2 method #

      The point the curve's Function gives for t, kept from 0 to 1. A NaN t panics.

    • @PanicsAtCaller Public Method PointAtDistance(distance: Float): Vec2 method #

      The point so far along the curve, kept from 0 to its Length. A NaN distance panics.

    • @PanicsAtCaller Public Method Sample(count: Int): Vec2[] method #

      count points along the curve the same distance apart, from its start to its end. Fewer than two panics.

    Curve3 class

    Public Class Curve3

    A curve in 3D from a Function of t from 0 to 1, which it goes along by length too, from a table of samples' lengths, its straight lines' between them, so more samples follow its bends closer.

    std/math/curves.fb, line 269

    • @PanicsAtCaller Public New(point: Func(Float): Vec3, samples: Int = 256) constructor #

      The curve point gives for t from 0 to 1, measured at samples places along it. Fewer than one sample panics.

    • @PanicsAtCaller Public Static Method CatmullRom(points: Vec3[], closed: Bool = False, samples: Int = 64): Curve3 static method #

      The Catmull-Rom spline through the points, each of them on it, around to the first when closed, measured at samples places along each segment. Fewer than two points, or than one sample, panics.

    • @PanicsAtCaller Public Static Method BSpline(points: Vec3[], closed: Bool = False, samples: Int = 64): Curve3 static method #

      The uniform cubic B-spline the points shape, near them rather than through them: an open one starts and ends at its ends, and a closed one goes around. It's measured at samples places along each segment. Fewer than two points, or than one sample, panics.

    • @PanicsAtCaller Public Static Method Bezier(points: Vec3[], samples: Int = 64): Curve3 static method #

      The cubic Beziers one after another, each from the last one's end: a start, then two control points and an end for each, so 3n + 1 points in all, measured at samples places along each. Any other count of points, or fewer than one sample, panics.

    • Public Property Length: Float property #

      How long the curve is, as its samples measure it.

    • @PanicsAtCaller Public Method PointAt(t: Float): Vec3 method #

      The point the curve's Function gives for t, kept from 0 to 1. A NaN t panics.

    • @PanicsAtCaller Public Method PointAtDistance(distance: Float): Vec3 method #

      The point so far along the curve, kept from 0 to its Length. A NaN distance panics.

    • @PanicsAtCaller Public Method Sample(count: Int): Vec3[] method #

      count points along the curve the same distance apart, from its start to its end. Fewer than two panics.

    Functions

    QuadraticBezier function

    Public Function QuadraticBezier(a: Vec2, b: Vec2, c: Vec2, t: Float): Vec2

    The point t of the way along the quadratic Bezier from a to c, pulled toward b.

    std/math/curves.fb, line 12

    QuadraticBezier function

    Public Function QuadraticBezier(a: Vec3, b: Vec3, c: Vec3, t: Float): Vec3

    The point t of the way along the quadratic Bezier from a to c, pulled toward b.

    std/math/curves.fb, line 18

    CubicBezier function

    Public Function CubicBezier(a: Vec2, b: Vec2, c: Vec2, d: Vec2, t: Float): Vec2

    The point t of the way along the cubic Bezier from a to d, pulled toward b, then c.

    std/math/curves.fb, line 24

    CubicBezier function

    Public Function CubicBezier(a: Vec3, b: Vec3, c: Vec3, d: Vec3, t: Float): Vec3

    The point t of the way along the cubic Bezier from a to d, pulled toward b, then c.

    std/math/curves.fb, line 31

    Hermite function

    Public Function Hermite(start: Vec2, startTangent: Vec2, end: Vec2, endTangent: Vec2, t: Float): Vec2

    The point t of the way along the Hermite curve from start, going in its tangent's direction, to end, arriving in its: a cubic Bezier with control points a third of each tangent along.

    std/math/curves.fb, line 39

    Hermite function

    Public Function Hermite(start: Vec3, startTangent: Vec3, end: Vec3, endTangent: Vec3, t: Float): Vec3

    The point t of the way along the Hermite curve from start, going in its tangent's direction, to end, arriving in its: a cubic Bezier with control points a third of each tangent along.

    std/math/curves.fb, line 49

    CatmullRom function

    Public Function CatmullRom(a: Vec2, b: Vec2, c: Vec2, d: Vec2, t: Float): Vec2

    The point t of the way from b to c on the uniform Catmull-Rom spline through a, b, c, and d: a Hermite curve whose tangents at b and c point from the points on either side.

    std/math/curves.fb, line 60

    CatmullRom function

    Public Function CatmullRom(a: Vec3, b: Vec3, c: Vec3, d: Vec3, t: Float): Vec3

    The point t of the way from b to c on the uniform Catmull-Rom spline through a, b, c, and d: a Hermite curve whose tangents at b and c point from the points on either side.

    std/math/curves.fb, line 67

    BSpline function

    Public Function BSpline(a: Vec2, b: Vec2, c: Vec2, d: Vec2, t: Float): Vec2

    The point t of the way along the segment of the uniform cubic B-spline that a, b, c, and d shape, which passes near b and c rather than through them, and joins the next segment smoothly.

    std/math/curves.fb, line 74

    BSpline function

    Public Function BSpline(a: Vec3, b: Vec3, c: Vec3, d: Vec3, t: Float): Vec3

    The point t of the way along the segment of the uniform cubic B-spline that a, b, c, and d shape, which passes near b and c rather than through them, and joins the next segment smoothly.

    std/math/curves.fb, line 85

    Report an issue with this page or with FutureBlitz on GitHub.