Generate helixes that can optionally taper to a point at each end.
Project description
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/
Test PyPi package: https://test.pypi.org/project/taperable-helix/
Free software: MIT license
Source: helix.py
Examples
def helical_line(
radius: float = 5, pitch: float = 2, height: float = 6, num_points: int = 100
) -> List[Tuple[float, float, float]]:
h: Helix = Helix(radius=radius, pitch=pitch, height=height)
f = h.helix()
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]],
]:
# Create three helixes that taper to a point
# Create the base Helix
h: Helix = Helix(
radius=radius, pitch=pitch, height=height, taper_out_rpos=0.1, taper_in_rpos=0.9
)
# The Upper points, horz_offset defaults to 0
fU = h.helix(HelixLocation(vert_offset=tri_height / 2))
points_fU = list(map(fU, linspace(h.first_t, h.last_t, num=100, dtype=float)))
# The Lower points, again horz_offset defaults to 0
fL = h.helix(HelixLocation(vert_offset=-tri_height / 2))
points_fL = list(map(fL, linspace(h.first_t, h.last_t, num=100, dtype=float)))
# The Middle point, change vert_offset to 0
fM = h.helix(HelixLocation(horz_offset=tri_width))
points_fM = list(map(fM, linspace(h.first_t, h.last_t, num=100, dtype=float)))
return (points_fU, points_fM, points_fL)
Prerequisites
Using
python >= 3.7
Development and Examples
See dev-requirements.in for most up to date list:
pip-tools
bump2version
wheel
isort
black
flake8
tox
tox-conda
coverage
Sphinx~=3.2
sphinx-autodoc-typehints~=1.11
sphinx-prompt~=1.3
sphinx_substitution_extensions>=2020.09.30, <2021.12.00
twine
pytest
pytest-runner
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.
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.8.10.tar.gz
.
File metadata
- Download URL: taperable_helix-0.8.10.tar.gz
- Upload date:
- Size: 18.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.7.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ac42f7a76d7e51723f773e25b4daeaeeff432645698ece266072de49b46aea3c |
|
MD5 | f0fb887b212c339d5e291842703236b4 |
|
BLAKE2b-256 | 5314064b2b4cf3c0e2418543b0e249aee6075fa78570973e9fb035de131ba182 |
File details
Details for the file taperable_helix-0.8.10-py2.py3-none-any.whl
.
File metadata
- Download URL: taperable_helix-0.8.10-py2.py3-none-any.whl
- Upload date:
- Size: 7.4 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/50.3.0 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.7.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 493140894ebf8c13f39673ade2bda472c4837db94b1b7c8705f0b67ae3855e88 |
|
MD5 | 6c2053f300ae78aa140cb012678a3413 |
|
BLAKE2b-256 | 8eb2311841bbfacb1cc66fea7dc261d561afbe5fffc0e4bcffec243e2eca5b9e |