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/seequent/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.2.1

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.2.1.tar.gz (8.6 kB view details)

Uploaded Source

File details

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

File metadata

  • Download URL: vectormath-0.2.1.tar.gz
  • Upload date:
  • Size: 8.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Python-urllib/2.7

File hashes

Hashes for vectormath-0.2.1.tar.gz
Algorithm Hash digest
SHA256 18afad14d1614c3b880e764a7a5d5928fd5140617803630a6ca45680c597c8f6
MD5 3da83d2ba583a32f639dfe5fe1ea1531
BLAKE2b-256 5638e80285fbc9dd50397c2eef51ebb7569a8230b5f1e2bec49fd173ea37a3c9

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