A python library for generating beizer curves.
Project description
beizer-curves
A python library for generating beizer curves.
Installation
pip install beizer-curves
Usage
def beizer_curve(
points,
output_points_count: int,
destructive: bool = False,
dtype: np.dtype = np.int64,
):
Generate a beizer curve.
points
- Knots in format:[[x1, x2, ..., xn], [y1, y2, ..., yn], [z1, z2, ..., zn]]
.output_points_count
- How many points of the curve to generate.destructive
- Allow function to modifypoints
array. Don't set to true, if you want to usepoints
array later.dtype
- dtype of array of returned points of the curve.
Points of a curve are returned in format: [[x1, x2, ..., xn], [y1, y2, ..., yn], [z1, z2, ..., zn]]
, where n is output_points_count
.
def random_beizer_curve(
start_point,
end_point,
output_points_count: int,
random_points_count: int = 1,
point_spread: float = 1,
noise_max_offset: float = 0,
noise_rate: float = 0.5,
dtype=np.int64,
return_forming_points: bool = False,
):
Generate a random beizer curve, which starts at start_point and ends at end_point.
-
start_point
,end_point
- coordinates of start and end points of curve in format[x, y, z, ...]
. -
output_points_count
- How many points of the curve to generate.if output_points_count < 0: output_points_count = math.ceil(distance / -output_points_count)
Where
distance
is distance between start and end. -
random_points_count
- How many knots to generate. -
point_spread
- A scale of a rectangular figure with corners of start_point and end_point, in bounds of which random knots are generated. Has to be > 0. -
noise_max_offset
- Max offset of a curve point.if output_points_count < 0: output_points_count = math.ceil(distance / -output_points_count)
Where
distance
is distance between start and end. -
noise_rate
- A part of curve points to apply noise offset to. Has to belong to [0; 1]. -
dtype
- dtype array of returned points of the curve. -
return_forming_points
-return points, curve if return_forming_points else curve
, wherepoints
are randomly generated knots
Usage example
import random
import matplotlib.pyplot as plt
import numpy as np
from beizer_curves import *
def plot_curve(points_count, i):
start = [random.randrange(1, 2000), random.randrange(1, 2000)]
noise = -200 * i
end = [random.randrange(1, 2000), random.randrange(1, 2000)]
points, curve = random_beizer_curve(
start,
end,
output_points_count=50,
random_points_count=points_count,
noise_max_offset=noise,
noise_rate=0.25,
dtype=np.float64,
return_forming_points=True,
)
fig = plt.figure()
plt.axis("equal")
plt.scatter(curve[0], curve[1])
plt.scatter(points[0], points[1], color='red')
fig.savefig(f"example_{points_count}_{i + 1}.png")
Example curves
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 beizer-curves-0.0.1.tar.gz
.
File metadata
- Download URL: beizer-curves-0.0.1.tar.gz
- Upload date:
- Size: 3.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 94513afe165b6d709c05ee3283eb02ce94686fac3c351bd4a83e1c4923dd455e |
|
MD5 | bf67ef2df9b85287739ecf59d9b1f8dc |
|
BLAKE2b-256 | aafc632abd72e8336b51628d3f7336957ab6f3ca2e0f281f3a1c3add25063944 |
File details
Details for the file beizer_curves-0.0.1-py3-none-any.whl
.
File metadata
- Download URL: beizer_curves-0.0.1-py3-none-any.whl
- Upload date:
- Size: 4.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 425ef9ba984e494f2fbd040a34adff7674532316cce219376b4c116713ee5db4 |
|
MD5 | 1a00bf3fbb88618f26485a1d65388e45 |
|
BLAKE2b-256 | 005885ba3ae1189daac9982e87decabe87e630beb03c970214b750acce6a3156 |