aboutsummaryrefslogtreecommitdiff
path: root/script.it/shapes/bezier.mli
diff options
context:
space:
mode:
Diffstat (limited to 'script.it/shapes/bezier.mli')
-rwxr-xr-xscript.it/shapes/bezier.mli40
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