diff --git a/docs/images/lib-bijection_offset-1.JPG b/docs/images/lib-bijection_offset-1.JPG new file mode 100644 index 00000000..c3859a1f Binary files /dev/null and b/docs/images/lib-bijection_offset-1.JPG differ diff --git a/docs/images/lib-bijection_offset-2.JPG b/docs/images/lib-bijection_offset-2.JPG new file mode 100644 index 00000000..bf225079 Binary files /dev/null and b/docs/images/lib-bijection_offset-2.JPG differ diff --git a/docs/lib-bijection_offset.md b/docs/lib-bijection_offset.md new file mode 100644 index 00000000..858856d0 --- /dev/null +++ b/docs/lib-bijection_offset.md @@ -0,0 +1,67 @@ +# bijection_offset + +Move 2D outlines outward or inward by a given amount. Each point of the offsetted shape is paired with exactly one point of the original shape. + + + +## Parameters + +- `pts` : Points of a shape. +- `d` : Amount to offset the shape. When negative, the shape is offset inwards. + +## Examples + + include ; + + shape = [ + [15, 0], + [15, 30], + [0, 20], + [-15, 40], + [-15, 0] + ]; + + color("red") polygon(bijection_offset(shape, 3)); + color("orange") polygon(bijection_offset(shape, 2)); + color("yellow") polygon(bijection_offset(shape, 1)); + color("green") polygon(shape); + color("blue") polygon(bijection_offset(shape, -1)); + color("indigo") polygon(bijection_offset(shape, -2)); + color("purple") polygon(bijection_offset(shape, -3)); + +![bijection_offset](images/lib-bijection_offset-1.JPG) + + include ; + include ; + include ; + include ; + include ; + + shape = [ + [5, 0], + [3, 9], + [0, 10], + [-5, 0] + ]; + offsetted = bijection_offset(shape, 1); + + offsetted2 = bijection_offset(shape, 2); + offsetted3 = bijection_offset(shape, 3); + + t_step = 0.05; + + p0 = [0, 0, 0]; + p1 = [40, 60, 35]; + p2 = [-50, 70, 0]; + p3 = [20, 150, -35]; + p4 = [30, 50, -3]; + + path_pts = bezier_curve(t_step, + [p0, p1, p2, p3, p4] + ); + + path_extrude(concat(shape, offsetted), path_pts, "HOLLOW"); + path_extrude(concat(offsetted2, offsetted3), path_pts, "HOLLOW"); + +![bijection_offset](images/lib-bijection_offset-2.JPG) +