Metadata-Version: 2.1
Name: VisualShape3D
Version: 0.1.3
Summary: A small package of 3D geometry plottable in matplotlib.
Home-page: https://pypi.org/project/VisualShape3D/
Author: Liqun He
Author-email: heliqun@ustc.edu.cn
License: UNKNOWN
Project-URL: Bug Tracker, https://pypi.org/project/VisualShape3D/
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.6
Description-Content-Type: text/markdown
License-File: LICENSE

# VisualShape3D

## About VisualShape3D

VisualShape3D intends to plot 3D points, lines and polygons more easily in matplotlib. That is, one needs not create a plotting figure by plt.figure and plt.subplot() as usual.  
Note that there is a research version of VisualShape3D in PyPi, so-called Shape4D. Now it's not actively developed for the people have left for career. 


## Core Features
- Three shapes : Point, Segment and Polygon.
- Its logic for 3D definition : creating a 2D shape first in working plane and then moving its referene point to a desired 3D position and rotating its normal vector of facet to a designated orientation.
- It can check whether or not a point is inside a segment or polygon, by their magic functions `__contains__` as overloaded for Segment and Polygon.
- `__hash__` and `__eq__`, also overloaded for Point, Segment and Polygon.
- `__neg__` overloaded for polygon when one wants to know the list of vertices on its other side.


## Requirements

* [Python](http://www.python.org) 3 
* Matplotlib is installed.

## Documentation

To be continued.

## Installation
```bash
pip install VisualShape3D
```

## Usage
```Python
import VisualShape3D.VisualShapes as vs
W,H = 2.0,1.5
shape = vs.Shape('rectangle',W,H)
shape = shape.move(to = (2,0,0), by = (45,30))

line = vs.Polyline((0,0,0),(3,1.,2))
P = shape.intercept(line)
line.broken_by(P)

shape.plot(hideAxes=True,style = {'facecolor':'cornflowerblue', 'edgecolor':'navy'})
shape.add_plot(line,style={'color':'k','linewidth':2,'node':'visible'})
shape.show(azim=-20, elev=3)
```
<img src="./html/_images/logo_drawn.png"/>

## Change Log

[changelog.md](changelog.md)

## License

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.

## Contact
heliqun@ustc.edu.cn



