mirror of
https://github.com/JustinSDK/dotSCAD.git
synced 2025-07-31 20:10:36 +02:00
added sphere_spiral_extrude
This commit is contained in:
@@ -77,6 +77,7 @@ Too many dependencies? Because OpenSCAD doesn't provide namespace management, I
|
||||
- [helix_extrude](https://openhome.cc/eGossip/OpenSCAD/lib-helix_extrude.html)
|
||||
- [golden_spiral_extrude](https://openhome.cc/eGossip/OpenSCAD/lib-golden_spiral_extrude.html)
|
||||
- [archimedean_spiral_extrude](https://openhome.cc/eGossip/OpenSCAD/lib-archimedean_spiral_extrude.html)
|
||||
- [sphere_spiral_extrude](https://openhome.cc/eGossip/OpenSCAD/lib-sphere_spiral_extrude_spiral_extrude.html)
|
||||
|
||||
- Other
|
||||
- [turtle2d](https://openhome.cc/eGossip/OpenSCAD/lib-turtle2d.html)
|
||||
|
BIN
docs/images/lib-sphere_spiral_extrude-1.JPG
Normal file
BIN
docs/images/lib-sphere_spiral_extrude-1.JPG
Normal file
Binary file not shown.
After Width: | Height: | Size: 37 KiB |
63
docs/lib-sphere_spiral_extrude.md
Normal file
63
docs/lib-sphere_spiral_extrude.md
Normal file
@@ -0,0 +1,63 @@
|
||||
# sphere_spiral_extrude
|
||||
|
||||
Extrudes a 2D shape along the path of a sphere spiral.
|
||||
|
||||
When using this module, you should use points to represent the 2D shape. You need to provide indexes of triangles, too. This module provides two prepared triangles indexes. One is `"RADIAL"`. See [polysections](https://openhome.cc/eGossip/OpenSCAD/lib-polysections.html) for details.
|
||||
|
||||
Dependencies: `rotate_p`, `sphere_spiral`, `cross_sections`, `polysections`.
|
||||
|
||||
## Parameters
|
||||
|
||||
- `shape_pts` : A list of points represent a shape. See the example below.
|
||||
- `radius` , `za_step`, `z_circles`, `begin_angle`, `end_angle`, `vt_dir`, `rt_dir` : See [sphere_spiral](https://openhome.cc/eGossip/OpenSCAD/lib-sphere_spiral.html) for details.
|
||||
- `twist` : The number of degrees of through which the shape is extruded.
|
||||
- `scale` : Scales the 2D shape by this value over the length of the extrusion. Scale can be a scalar or a vector.
|
||||
- `triangles` : `"RADIAL"` (default), `"HOLLOW"` or user-defined indexes. See [polysections](https://openhome.cc/eGossip/OpenSCAD/lib-polysections.html) for details.
|
||||
|
||||
## Examples
|
||||
|
||||
include <rotate_p.scad>;
|
||||
include <cross_sections.scad>;
|
||||
include <polysections.scad>;
|
||||
include <sphere_spiral.scad>;
|
||||
include <sphere_spiral_extrude.scad>;
|
||||
|
||||
function shape_pentagram(r) =
|
||||
[
|
||||
// shape points
|
||||
[
|
||||
[0, 1], [-0.224514, 0.309017],
|
||||
[-0.951057, 0.309017], [-0.363271, -0.118034],
|
||||
[-0.587785, -0.809017], [0, -0.381966],
|
||||
[0.587785, -0.809017], [0.363271, -0.118034],
|
||||
[0.951057, 0.309017], [0.224514, 0.309017]
|
||||
] * r,
|
||||
// triangles
|
||||
[
|
||||
[0, 1, 9],
|
||||
[2, 3, 1],
|
||||
[4, 5, 3],
|
||||
[6, 7, 5],
|
||||
[8, 9, 7],
|
||||
[1, 3, 5],
|
||||
[1, 5, 7],
|
||||
[1, 7, 9]
|
||||
]
|
||||
];
|
||||
|
||||
points_triangles = shape_pentagram(2);
|
||||
|
||||
|
||||
sphere_spiral_extrude(
|
||||
shape_pts = points_triangles[0],
|
||||
radius = 40,
|
||||
za_step = 2,
|
||||
z_circles = 20,
|
||||
begin_angle = 90,
|
||||
end_angle = 450,
|
||||
vt_dir = "SPI_UP",
|
||||
scale = 5,
|
||||
triangles = points_triangles[1]
|
||||
);
|
||||
|
||||

|
36
src/sphere_spiral_extrude.scad
Normal file
36
src/sphere_spiral_extrude.scad
Normal file
@@ -0,0 +1,36 @@
|
||||
/**
|
||||
* sphere_spiral_extrude.scad
|
||||
*
|
||||
* Extrudes a 2D shape along the path of a sphere spiral.
|
||||
*
|
||||
* @copyright Justin Lin, 2017
|
||||
* @license https://opensource.org/licenses/lgpl-3.0.html
|
||||
*
|
||||
* @see https://openhome.cc/eGossip/OpenSCAD/lib-sphere_spiral_extrude.html
|
||||
*
|
||||
**/
|
||||
|
||||
module sphere_spiral_extrude(shape_pts, radius, za_step,
|
||||
z_circles = 1, begin_angle = 0, end_angle = 0, vt_dir = "SPI_DOWN", rt_dir = "CT_CLK",
|
||||
twist = 0, scale = 1.0, triangles = "RADIAL") {
|
||||
|
||||
points_angles = sphere_spiral(
|
||||
radius = radius,
|
||||
za_step = za_step,
|
||||
z_circles = z_circles,
|
||||
begin_angle = begin_angle,
|
||||
end_angle = end_angle,
|
||||
vt_dir = vt_dir,
|
||||
rt_dir = rt_dir
|
||||
);
|
||||
|
||||
points = [for(pa = points_angles) pa[0]];
|
||||
angles = [for(pa = points_angles) [pa[1][0] + 90, pa[1][1], pa[1][2]]];
|
||||
|
||||
polysections(
|
||||
cross_sections(
|
||||
shape_pts, points, angles, twist = twist, scale = scale
|
||||
),
|
||||
triangles = triangles
|
||||
);
|
||||
}
|
Reference in New Issue
Block a user