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 : setuptools_scm
  • Linting and formatting : pylint
  • 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.2.3.tar.gz (13.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

rox_vectors-0.2.3-py3-none-any.whl (6.1 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for rox_vectors-0.2.3.tar.gz
Algorithm Hash digest
SHA256 2bf5042c70d39172ac69d8efad7a0076a77c5ee5001bb5ac9ca02c822f743aaf
MD5 548ef83be7bcd656870f3664e7f37db8
BLAKE2b-256 4df60b8caad8679043976edd9129d21a6c686e1ef8b3bc04a6ab2dff2da5a579

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for rox_vectors-0.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 03bbd7f894cadc8cd11637152e6d2d928b6d41eb757070e1b4c8bf01ed953966
MD5 596cdb9d3d7029a9f2f24375c6d7fd6f
BLAKE2b-256 a5e4cbb729bf5cf9f2fa75fe3292f68da06d37a7307850053d4489ccaa3eb8ea

See more details on using hashes here.

Supported by

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