https://github.com/divyajeettt/pygeo3d
A mathematical Python module. Allows you to play with 3D Points, Lines and Planes.
https://github.com/divyajeettt/pygeo3d
3d-geometry matplotlib pip python visualization
Last synced: about 2 months ago
JSON representation
A mathematical Python module. Allows you to play with 3D Points, Lines and Planes.
- Host: GitHub
- URL: https://github.com/divyajeettt/pygeo3d
- Owner: divyajeettt
- License: mit
- Created: 2022-08-22T18:28:38.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2022-08-24T18:48:33.000Z (almost 4 years ago)
- Last Synced: 2024-08-09T17:55:07.480Z (almost 2 years ago)
- Topics: 3d-geometry, matplotlib, pip, python, visualization
- Language: Python
- Homepage:
- Size: 38.1 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# pygeo3d
## About pygeo3d
pygeo3d (py-geometry-3d) is a vast mathematical module providing (real) 3-dimensional objects, i.e. Points, Lines and Planes as Python objects through classes.
*Date of creation:* `April 22, 2021` \
*Date of first release on [PyPI](https://pypi.org/project/pygeo3d/):* `May 06, 2021`
Using this module, 3-dimensional geometry can be easily executed in Python. Along with providing calulative tools, it also allows a user to visualize Points, Lines and Planes on a 3D plot, and can be used as a learning tool to enhance a student's 3D visualization capabilities. The module is enriched with help-text and examples.
## Included classes and functions
To access the help-text of a class to know more about it, run:
```python
help(pygeo3d.classname)
```
### About the class `Point`
`Point(x, y, z)` represents the position vector of a Point `(x, y, z)` in 3-dimensional Cartesian coordinate space. The difference of two Points gives a Vector, while the addition of a Vector to a Point gives another Point.
### About the class `Line`
`Line(a, b)` represents the vector equation of a Line `r = a + Kb` in 3-dimensional Cartesian coordinate space. A Line can be indexed/sliced by real numbers to get the Point(s) that lie on the line for the given values of parameter k. Membership testing on a Line allowes a user to check if a Point lies on it.
### About the class `Plane`
`Plane(r, n)` represents the vector equation of a Plane `r • n = d` in 3-dimensional Cartesian coordinate space. Membership testing on a Plane allows a user to check if a Point/Line lies on it.
All classes have various other methods, and even alternate constructors. Users are advised to look at the documentation for more efficient usage.
### Some functions
A variety of functions have been provided inn the module, which include functions to calculate/check:
- Euclidean distance between Points, Lines, and Planes
- Angle between Lines and Planes
- Intersections of Lines and Planes
- Images and Projections of Points and Lines in/on Lines/Planes
- If a list of Points are collinear/coplanar
- If some Lines or Planes are parallel or perpendicular
And so on. Users are advised to run the following command in Python to get to know about all the available functions:
```python
dir(pygeo3d)
```
## Update History
### Updates (0.0.5)
- Minor bug fixes
- Alternate constructor `Point.FromSequence(seq)` for `Point` can now accept generators/generator-expressions as argument
- More colors available for plotting
### Updates (0.0.6)
`Line` objects now support slicing, which returns a `tuple` of `Points` on the Line at the indices given in the slice
### Updates (0.0.7)
Minor bug fixes
### Updates (0.0.8)
- Minor bug fixes: Fixed more issues of floating point precision
- Removed the function `plot_random_objects()`
- Better type hinting
## Footnotes
This project is dependent upon the following of my own modules, available through *PyPI*:
- [`pyvectors`](https://github.com/divyajeettt/pyvectors)
- [`linear_equations`](https://github.com/divyajeettt/linear-equations)
## Run
To use, execute:
```
pip3 install pygeo3d
```
Import this file in your project, whenever needed, using:
```python
import pygeo3d
```