diff options
author | Sébastien Dailly <sebastien@chimrod.com> | 2021-02-05 09:08:39 +0100 |
---|---|---|
committer | Sébastien Dailly <sebastien@dailly.me> | 2022-02-07 14:39:30 +0100 |
commit | 561d0f0155f4906d90eb7e73a3ff9cb28909126f (patch) | |
tree | 9a606c2d7832272ea33d7052512a5fa59805d582 /script.it/shapes/bezier.mli | |
parent | 86ec559f913c389e8dc055b494630f21a45e039b (diff) |
Update project structure
Diffstat (limited to 'script.it/shapes/bezier.mli')
-rwxr-xr-x | script.it/shapes/bezier.mli | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/script.it/shapes/bezier.mli b/script.it/shapes/bezier.mli new file mode 100755 index 0000000..2f5bbcf --- /dev/null +++ b/script.it/shapes/bezier.mli @@ -0,0 +1,40 @@ +type t = + { p0:Gg.v2 (* The starting point *) + ; p1:Gg.v2 (* The end point *) + ; ctrl0:Gg.v2 (* The control point *) + ; ctrl1:Gg.v2 } (* The control point *) + +type quadratic + +(** + Build a control point for a quadratic curve for passing throuht 3 points. + taken from https://xuhehuan.com/2608.html + + + also look to https://pomax.github.io/bezierinfo/#pointcurves +*) +val three_points_quadratic + : Gg.v2 -> Gg.v2 -> Gg.v2 -> quadratic + +(** + Create a curve from three points. + + This is an implementation for + https://pomax.github.io/bezierinfo/#pointcurves + +*) +val three_points_cubic + : float -> Gg.v2 -> Gg.v2 -> Gg.v2 -> t + +val quadratic_to_cubic + : quadratic -> t + +(** Split a bezier curve in two at a given position *) +val slice + : float -> t -> t * t + +(** Return the closest point to the curve by approximation *) +val get_closest_point + : Gg.v2 -> t -> float * Gg.v2 + +val reverse: t -> t |