Skip to main content

vectormath: vector math utilities for Python

Project description

vectormath

Latest PyPI version MIT license Travis CI build status Code test coverage

Vector math utilities for Python built on NumPy

Why

The vectormath package provides a fast, simple library of vector math utilities by leveraging NumPy. This allows explicit geometric constructs to be created (for example, Vector3 and Plane) without redefining the underlying array math.

Scope

The vectormath package includes Vector3/Vector2 and Vector3Array/Vector2Array.

Goals

  • Speed: All low-level operations rely on NumPy arrays. These are densely packed, typed, and partially implemented in C. The VectorArray classes in particular take advantage of this speed by performing vector operations on all Vectors at once, rather than in a loop.

  • Simplicty: High-level operations are explicit and straight-forward. This library should be usable by Programmers, Mathematicians, and Geologists.

Alternatives

  • NumPy can be used for any array operations

  • Many small libraries on PyPI (e.g. vectors) implement vector math operations but are are only built with single vectors in mind.

Connections

  • properties uses vectormath as the underlying framework for Vector properties.

Installation

To install the repository, ensure that you have pip installed and run:

pip install vectormath

For the development version:

git clone https://github.com/aranzgeo/vectormath.git
cd vectormath
pip install -e .

Examples

This example gives a brief demonstration of some of the notable features of Vector3 and Vector3Array

import numpy as np
import vectormath as vmath

# Single Vectors
v = vmath.Vector3(5, 0, 0)
v.normalize()
print(v)                          # >> [1, 0, 0]
print(v.x)                        # >> 1.0

# VectorArrays are much faster than a for loop over Vectors
v_array = vmath.Vector3Array([[4, 0, 0], [0, 2, 0], [0, 0, 3]])
print(v_array.x)                  # >> [4, 0, 0]
print(v_array.length)             # >> [4, 2, 3]
print(v_array.normalize())        # >> [[1, 0, 0], [0, 1, 0], [0, 0, 1]]

# Vectors can be accessed individually or in slices
print(type(v_array[1:]))          # >> vectormath.Vector3Array
print(type(v_array[2]))           # >> vectormath.Vector3

# All these classes are just numpy arrays
print(isinstance(v, np.ndarray))  # >> True
print(type(v_array[1:, 1:]))      # >> numpy.ndarray

Current version: v0.1.4

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

vectormath-0.1.4.tar.gz (6.6 kB view details)

Uploaded Source

File details

Details for the file vectormath-0.1.4.tar.gz.

File metadata

  • Download URL: vectormath-0.1.4.tar.gz
  • Upload date:
  • Size: 6.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for vectormath-0.1.4.tar.gz
Algorithm Hash digest
SHA256 a3c5230c50f941aba2838f776fad11c1ed8c48fb822b3a0224ec15d0d62574da
MD5 23d5e65c0ccfece4b47cd20b500f8ac8
BLAKE2b-256 bf0c58f9a1cba71873af9c3cd7b469806319b0638a3d6cb4fa700f37bc256caa

See more details on using hashes here.

Provenance

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