diff --git a/docs/images/lib-path_scaling_sections-1.JPG b/docs/images/lib-path_scaling_sections-1.JPG new file mode 100644 index 00000000..6b76727e Binary files /dev/null and b/docs/images/lib-path_scaling_sections-1.JPG differ diff --git a/docs/images/lib-path_scaling_sections-2.JPG b/docs/images/lib-path_scaling_sections-2.JPG new file mode 100644 index 00000000..390b7133 Binary files /dev/null and b/docs/images/lib-path_scaling_sections-2.JPG differ diff --git a/docs/images/lib-path_scaling_sections-3.JPG b/docs/images/lib-path_scaling_sections-3.JPG new file mode 100644 index 00000000..d1a1db41 Binary files /dev/null and b/docs/images/lib-path_scaling_sections-3.JPG differ diff --git a/docs/lib-path_scaling_sections.md b/docs/lib-path_scaling_sections.md new file mode 100644 index 00000000..1e32adeb --- /dev/null +++ b/docs/lib-path_scaling_sections.md @@ -0,0 +1,99 @@ +# path_scaling_sections + +Given a edge path with the first point [x, 0, 0] or [0, y, 0] at the outline of a shape. This function use the path to calculate scaling factors and returns all scaled sections. Combined with the `polysections` module, you can create a extrusion with the path as an edge. + +**Since:** 1.2. + +## Parameters + +- `shape_pts` : A list of points represent a shape. +- `edge_path` : A list of points represent the edge path. + +## Examples + + include ; + include ; + include ; + include ; + include ; + + taiwan = shape_taiwan(100); + fst_pt = [13, 0, 0]; + + edge_path = [ + fst_pt, + fst_pt + [0, 0, 10], + fst_pt + [10, 0, 20], + fst_pt + [8, 0, 30], + fst_pt + [12, 0, 40], + fst_pt + [0, 0, 50], + fst_pt + [0, 0, 60] + ]; + + #hull_polyline3d(edge_path); + polysections(path_scaling_sections(taiwan, edge_path)); + +![path_scaling_sections](images/lib-path_scaling_sections-1.JPG) + + include ; + include ; + include ; + include ; + include ; + include ; + + + taiwan = shape_taiwan(100); + fst_pt = [13, 0, 0]; + + edge_path = bezier_curve(0.05, [ + fst_pt, + fst_pt + [0, 0, 10], + fst_pt + [10, 0, 20], + fst_pt + [8, 0, 30], + fst_pt + [12, 0, 40], + fst_pt + [0, 0, 50], + fst_pt + [0, 0, 60] + ]); + + #hull_polyline3d(edge_path); + polysections(path_scaling_sections(taiwan, edge_path)); + +![path_scaling_sections](images/lib-path_scaling_sections-2.JPG) + + include ; + include ; + include ; + include ; + include ; + include ; + + taiwan = shape_taiwan(100); + fst_pt = [13, 0, 0]; + + edge_path = bezier_curve(0.05, [ + fst_pt, + fst_pt + [0, 0, 10], + fst_pt + [10, 0, 20], + fst_pt + [8, 0, 30], + fst_pt + [12, 0, 40], + fst_pt + [0, 0, 50], + fst_pt + [0, 0, 60] + ]); + + leng = len(edge_path); + twist = 90; + twist_step = twist / leng; + sections = path_scaling_sections(taiwan, edge_path); + + rotated_sections = [ + for(i = [0:leng - 1]) + [ + for(p = sections[i]) + rotate_p(p, twist_step * i) + ] + ]; + + polysections(rotated_sections); + +![path_scaling_sections](images/lib-path_scaling_sections-3.JPG) \ No newline at end of file