Generate helixes that can optionally taper to a point at each end.
Project description
Taperable Helix
Generate helixes that can optionally taper to a point at each end.
GitHub repo: https://github.com/winksaville/py-taperable-helix/
Documentation: https://taperable-helix.readthedocs.io/
PyPi package: https://test.pypi.org/project/taperable-helix/
Free software: MIT license
Package Docs
def helix(
radius: float,
pitch: float,
height: float,
taper_rpos: float = 0,
inset_offset: float = 0,
horz_offset: float = 0,
vert_offset: float = 0,
first_t: float = 0,
last_t: float = 1,
) -> Callable[[float], Tuple[float, float, float]]:
...
Examples
def helical_line(
radius: float = 5, pitch: float = 2, height: float = 6, num_points: int = 100
) -> List[Tuple[float, float, float]]:
f = helix(radius, pitch, height)
points = list(map(f, linspace(start=0, stop=1, num=num_points, dtype=float)))
# print(f"helical_line: points={points}")
return points
def helical_triangle(
radius: float = 1,
pitch: float = 2,
height: float = 4,
num_points: int = 100,
tri_height: float = 0.2,
tri_width: float = 0.2,
) -> Tuple[
List[Tuple[float, float, float]],
List[Tuple[float, float, float]],
List[Tuple[float, float, float]],
]:
taper_out_rpos = 0.1
taper_in_rpos = 0.9
first_t = 0
last_t = 1
# Create three helixes that taper to a point
fU = helix(radius, pitch, height, taper_out_rpos=taper_out_rpos, taper_in_rpos=taper_in_rpos, vert_offset=tri_height / 2)
points_fU = list(map(fU, linspace(first_t, last_t, num=100, dtype=float)))
fM = helix(radius, pitch, height, taper_out_rpos=taper_out_rpos, taper_in_rpos=taper_in_rpos, horz_offset=tri_width)
points_fM = list(map(fM, linspace(first_t, last_t, num=100, dtype=float)))
fL = helix(
radius, pitch, height, taper_out_rpos=taper_out_rpos, taper_in_rpos=taper_in_rpos, vert_offset=-tri_height / 2
)
points_fL = list(map(fL, linspace(first_t, last_t, num=100, dtype=float)))
return (points_fU, points_fM, points_fL)
Prerequisites
Using
python >= 3.7
Development and Examples
sphinx
plotly
numpy
panda
python-kaleido
Credits
This code originated from a post by Adam Urbanczyk to the CadQuery forum and this package was created with Cookiecutter and the audreyr/cookiecutter-pypackage project template.
History
0.1.0 (2020-08-31)
First release on PyPI.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
taperable_helix-0.5.0.tar.gz
(16.3 kB
view hashes)
Built Distribution
Close
Hashes for taperable_helix-0.5.0-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 704b7003b768dcd7d897029193b6cc21a9c3918278ac2765189f234c6693d14d |
|
MD5 | 7624cae9ba12820ad558534f67319bef |
|
BLAKE2b-256 | b57ea49fce7f5d9ba908e3fccc1095599e097180148591c89e086cc7f9a3cd50 |