Skip to main content

2D vector classes

Project description

ROX Vectors

A lightweight and simple 2D vector class for Python, providing essential vector operations, geometric transformations, and utility functions. Perfect for mathematical simulations and robotics.

Features

  • Basic Vector Operations: Addition, subtraction, multiplication, division, negation.
  • Geometric Properties: Vector length, angle, normalization, and perpendicular vectors.
  • Transformation Utilities: Translation and rotation.
  • Dot and Cross Product calculations.
  • Line Segment manipulation and properties.

Installation

pip install rox-vectors

Usage Examples

Creating Vectors

from rox_vectors import Vector

v1 = Vector(3, 4)
v2 = Vector(1, 2)
print(v1)  # (3.000, 4.000)
print(v2)  # (1.000, 2.000)

Basic Operations

v3 = v1 + v2  # (4.000, 6.000)
v4 = v1 - v2  # (2.000, 2.000)
v5 = v1 * 2   # (6.000, 8.000)
v6 = v1 / 2   # (1.500, 2.000)
v7 = -v1      # (-3.000, -4.000)

Geometric Properties

length = v1.r        # 5.0
angle = v1.phi       # 0.927 (in radians)
v8 = v1.u            # (0.600, 0.800)
v9 = v1.v            # (-0.800, 0.600)

Dot and Cross Products

dot_product = v1.dot(v2)       # 11.0
cross_product = v1.cross(v2)   # 2.0

Vector Transformation

v10 = v1.translate(2, 3)       # (5.000, 7.000)
v11 = v1.rotate(math.radians(90))  # (-4.000, 3.000)

Line Segment

from rox_vectors import Line

line = Line(Vector(0, 0), Vector(1, 1))
line.shift_y(1)
print(line)  # <Line(start=(0.000,1.000), end=(1.000,2.000))>
line_angle = line.phi  # 0.785 (in radians)

Distance and Projection Utilities

from rox_vectors import point_on_line, distance_to_line, distance_to_b

a = Vector(0, 0)
b = Vector(4, 4)
x = Vector(2, 3)

projection = point_on_line(a, b, x)  # (2.500, 2.500)
distance = distance_to_line(a, b, x) # 0.707
distance_b = distance_to_b(a, b, x)  # -0.707

Development

  1. Init host system with init_host.sh. This will build a dev image.

  2. Launch in VSCode devcontainer.

  3. develop and test in devcontainer (VSCode)

  4. trigger ci builds by bumping version with a tag. (see .gitlab-ci.yml)

Tooling

  • Automation: invoke - run invoke -l to list available commands. (uses tasks.py)
  • Verisoning : bump2version
  • Linting and formatting : ruff
  • Typechecking: mypy

What goes where

  • src/rox_vectors app code. pip install . .
  • tasks.py automation tasks.
  • .gitlab-ci.yml takes care of the building steps.

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

rox_vectors-0.1.2.tar.gz (7.2 kB view details)

Uploaded Source

Built Distribution

rox_vectors-0.1.2-py3-none-any.whl (6.0 kB view details)

Uploaded Python 3

File details

Details for the file rox_vectors-0.1.2.tar.gz.

File metadata

  • Download URL: rox_vectors-0.1.2.tar.gz
  • Upload date:
  • Size: 7.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.12.3

File hashes

Hashes for rox_vectors-0.1.2.tar.gz
Algorithm Hash digest
SHA256 eebea0a4420d46a4d38dbf73526b98f4b5c96448c42a052a10a6b8d343390713
MD5 b174855e34a9236f9d4443647d1f23af
BLAKE2b-256 a4cd99f8681abdb674c44401fb3815a78ed4474090c21b1da86d6f480813f18e

See more details on using hashes here.

File details

Details for the file rox_vectors-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: rox_vectors-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 6.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.12.3

File hashes

Hashes for rox_vectors-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 383d704102dd62c9f1499664ec2005dbba5327fe0417d06ca811d504a13eda8f
MD5 2ba45b7640cfe61ba15cdb01762c8833
BLAKE2b-256 f5c7d0b02f3e2dd55a179813b4302b67b524945d49bad23cb4084745c862761e

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