Skip to main content

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 modify points array. Don't set to true, if you want to use points 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, where points 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

beizer-curves-0.0.1.tar.gz (3.9 kB view details)

Uploaded Source

Built Distribution

beizer_curves-0.0.1-py3-none-any.whl (4.4 kB view details)

Uploaded Python 3

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

Hashes for beizer-curves-0.0.1.tar.gz
Algorithm Hash digest
SHA256 94513afe165b6d709c05ee3283eb02ce94686fac3c351bd4a83e1c4923dd455e
MD5 bf67ef2df9b85287739ecf59d9b1f8dc
BLAKE2b-256 aafc632abd72e8336b51628d3f7336957ab6f3ca2e0f281f3a1c3add25063944

See more details on using hashes here.

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

Hashes for beizer_curves-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 425ef9ba984e494f2fbd040a34adff7674532316cce219376b4c116713ee5db4
MD5 1a00bf3fbb88618f26485a1d65388e45
BLAKE2b-256 005885ba3ae1189daac9982e87decabe87e630beb03c970214b750acce6a3156

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page