Metadata-Version: 2.4
Name: pavpen-geometry-calculator
Version: 0.1.0
Summary: Disparate utilities for calculating coordinates and other elements of geometric constructions
Project-URL: Documentation, https://github.com/pavpen/pavpen-geometry-calculator#readme
Project-URL: Issues, https://github.com/pavpen/pavpen-geometry-calculator/issues
Project-URL: Source, https://github.com/pavpen/pavpen-geometry-calculator
Author-email: "Pavel M. Penev" <pavpen@gmail.com>
License-Expression: MIT
License-File: LICENSE
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Education
Classifier: Intended Audience :: Manufacturing
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Scientific/Engineering :: Visualization
Classifier: Topic :: Software Development :: Libraries
Classifier: Typing :: Typed
Requires-Python: >=3.12
Description-Content-Type: text/markdown

# Geometry Calculator

Calculate coordinates, and other elements of a collection of geometric
constructions.

-----

## Table of Contents

* [Example](#example)
* [Install](#install)
* [License](#license)

## Example

```python
# Calculates an orthonormal basis of a space that spans a given set of
# points

import math
from pavpen.geometry_calculator.vector_field_implementations.tuple_vector_field_float_operations import (
    TupleVectorFieldFloatOperations,
)

result = OrthonormalBasisCalculator(
    vector_field_operations=TupleVectorFieldFloatOperations.for_3d(),
    float_tolerance=1e-8,
    points=((0, 0, 0), (0, 2, 0), (0, 0, -2)),
).calculate().basis_vectors

assert result == [(0.0, 1.0, 0.0), (0.0, 0.0, -1.0)]
```

### Notes

* Algebraic operations are separate from the objects storing vectors.  This
  allows treating existing objects as vectors without having to modify their
  inheritance hierarchy, or wrap them.
  * In the above example `TupleVectorFieldFloatOperations.for_3d()` returns an
    object which treats a `tuple[float, float, float]` as a 3-dimensional
    orthonormal vector.

## Install

```console
pip install pavpen-geometry-calculator
```

## License

Geometry Calculator is distributed under the terms of the
[MIT](https://spdx.org/licenses/MIT.html) license.
