sphere_spiral


Creates all points and angles on the path of a spiral around a sphere. It returns a vector of [[x, y, z], [ax, ay, az]]. [x, y, z] is actually obtained from rotating [radius, 0, 0] by [ax, ay, az]. It depends on the rotate_p function. Remember to include rotate_p.scad first.

Parameters

  • radius : The radius of the sphere.
  • za_step : The spiral rotates around the z axis. When the rotated angle increases za_step, a point will be calculated.
  • z_circles : The spiral rotates around the z axis. This parameter determines how many circles it will rotate from the top to the end. It defaults to 1.
  • begin_angle : The default value is 0 which means begins from the north pole of the sphere. See examples below.
  • end_angle : The default value is 0 which means begins from the sourth pole of the sphere. See examples below.
  • vt_dir : "SPI_DOWN" for spiraling down. "SPI_UP" for spiraling up. The default value is "SPI_DOWN".
  • rt_dir : "CT_CLK" for counterclockwise. "CLK" for clockwise. The default value is "CT_CLK".

Examples

include <rotate_p.scad>;
include <hull_polyline3d.scad>;
include <sphere_spiral.scad>;

points_angles = sphere_spiral(
    radius = 40, 
    za_step = 10, 
    z_circles = 20, 
    begin_angle = 90, 
    end_angle = 90
);

hull_polyline3d([for(pa = points_angles) pa[0]], 1);

%sphere(40);

sphere_spiral

sphere_spiral

sphere_spiral

include <rotate_p.scad>;
include <sphere_spiral.scad>;

points_angles = sphere_spiral(
    radius = 40, 
    za_step = 20, 
    z_circles = 40, 
    begin_angle = 900
);

for(pa = points_angles) {
    translate(pa[0]) rotate(pa[1])
        rotate([90, 0, 90]) linear_extrude(1) 
            text("A", valign = "center", halign = "center");
}

%sphere(40);

sphere_spiral

include <rotate_p.scad>;
include <hull_polyline3d.scad>;
include <sphere_spiral.scad>;

points_angles = sphere_spiral(
    radius = 40, 
    za_step = 5
);

for(a = [0:30:360]) {
    rotate(a) 
        hull_polyline3d([for(pa = points_angles) pa[0]], 2);
}

sphere_spiral