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://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
Built Distribution
File details
Details for the file taperable_helix-0.6.2.tar.gz
.
File metadata
- Download URL: taperable_helix-0.6.2.tar.gz
- Upload date:
- Size: 17.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.6.0.post20200814 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.7.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c7d4a531e9c7621fa218fb3650a57008d8b539f204c731184254a79b8824d0ca |
|
MD5 | 7e3557ec22d4d5e821fa5a2ef6a0fb15 |
|
BLAKE2b-256 | e5c426e24907eb31274f1d1fcfb84f0d396dbe2eb65832bd4de4da6feba9ccc6 |
File details
Details for the file taperable_helix-0.6.2-py2.py3-none-any.whl
.
File metadata
- Download URL: taperable_helix-0.6.2-py2.py3-none-any.whl
- Upload date:
- Size: 6.7 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.6.0.post20200814 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.7.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | abfb09866bd02e7b4856ce96e4077f94664868842507e361b9ed54c6209e5932 |
|
MD5 | ee6c17131424ab169c207511bb8bbfb2 |
|
BLAKE2b-256 | 33646791adc4695ff8e189737d47026acdc22b4e649417b80615efa97ffc2d15 |