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
-
Init host system with
init_host.sh
. This will build a dev image. -
Launch in VSCode devcontainer.
-
develop and test in devcontainer (VSCode)
-
trigger ci builds by bumping version with a tag. (see
.gitlab-ci.yml
)
Tooling
- Automation:
invoke
- runinvoke -l
to list available commands. (usestasks.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
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
rox_vectors-0.1.2.tar.gz
(7.2 kB
view details)
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | eebea0a4420d46a4d38dbf73526b98f4b5c96448c42a052a10a6b8d343390713 |
|
MD5 | b174855e34a9236f9d4443647d1f23af |
|
BLAKE2b-256 | a4cd99f8681abdb674c44401fb3815a78ed4474090c21b1da86d6f480813f18e |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 383d704102dd62c9f1499664ec2005dbba5327fe0417d06ca811d504a13eda8f |
|
MD5 | 2ba45b7640cfe61ba15cdb01762c8833 |
|
BLAKE2b-256 | f5c7d0b02f3e2dd55a179813b4302b67b524945d49bad23cb4084745c862761e |