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);
```

```
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);
```

```
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);
}
```