polygon
Python module to calculate geometric properties of arbitrary 2D polygons:
- area, centroid (center of mass)
- second moment of area (bending stiffness of beams)
- triangles: incircle and circumscribed (outer) circle
- solid of revolution: volume, surface areas, center of mass
- check if point is inside or on edge of polygon
- move, rotate and scale polygon
- plotting with matplotlib arguments (e.g. color, linestyle, label)
examples:
https://github.com/gerritnowald/polygon/blob/main/examples/examples.ipynb
installation:
pip install polygon-math
creating a polygon object:
from polygon_math import polygon
Vertices = [[x0,y0],[x1,y1],[x2,y2],...] # 2D-coordinates of vertices
polygon_object = polygon(Vertices)
- polygon can be open or closed (i.e. first = last vertex)
- holes can be defined by self-intersecting and opposite order of vertices inside than outside
creating a solid of revolution:
polygon_object = polygon(Vertices, axis)
- axis = 0: revolution around x-axis
- axis = 1: revolution around y-axis
attributes of polygon_object (geometrical properties):
v: Vertex index
e: Edge index (next of v)
- .IsClockwise Boolean, order of vertices
- .Area
- .Angles[v] inner angles
- .EdgesLength[e]
- .EdgesMiddle[xe,ye] midpoints of edges
- .CenterMass[x,y] centroid / center of mass
- .SecondMomentArea [Ixx, Iyy, Ixy], with respect to origin
- triangles:
- .CenterOuterCircle[x,y] circumcenter / center of circumsribed (outer) circle
- .RadiusOuterCircle radius of circumsribed (outer) circle
- .CenterInnerCircle[x,y] center of incircle (inner circle)
- .RadiusInnerCircle radius of incircle (inner circle)
- solid of revolution:
- .RotationVolume
- .RotationSurfaces[e]
- .CenterMassCrossSection[r,z] r radial, z axial, CenterMass[r,z] now relates to solid
methods of polygon_object:
- abs(polygon_object) returns area or volume of solid of revolution
- plotting (matplotlib optional arguments can be used)
- .plot() contour of polygon
- .plotCenterMass()
- .plotCenterEdges()
- triangles:
- .plotOutCircle() circumscribed (outer) circle
- .plotIncircle() incircle (inner circle)
- solid of revolution:
- .plot3d() 3D wireframe plot of solid
- .plotRotationAxis() only keyword arguments
- .plotCenterMassCrossSection() for 2D plot
- point testing
- polygon_object(point), .isPointInside(point) true, if point [x,y] is inside of polygon (not on the edge)
- .isPointOnEdge(point) true, if point [x,y] is on any edge of polygon
- manipulation (translation, rotation & scaling)
- polygon_object + [dx,dy] , polygon_object - [dx,dy] , .move([dx,dy])
translation by distances dx,dy in x,y-direction
- .centerOrigin()
moves origin of coordinate system to center of mass
- .rotate(angle,[cx,cy]) , .rotateClockwise(angle,[cx,cy])
(counter)-clockwise rotation by angle / °
with respect to point [cx,cy] (optional, default center of mass)
- polygon_object * [fx,fy] , polygon_object / [fx,fy] , .scale([fx,fy],[cx,cy])
scaling by factors fx, fy in x,y-direction (negative: flip)
with respect to point [cx,cy] (optional, default center of mass)
requirements
- numpy >= 1.15.0
- matplotlib >= 2.0.0
license:
MIT license. You are free to use the code any way you want, without liability or warranty.
Please reference my work if you use it.
Metadata
Release files for polygon-math 1.3.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| polygon_math-1.3.3.tar.gz | 9.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| polygon_math-1.3.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 18.6 kB
Release files / polygon_math-1.3.3.tar.gz
| Download URL | polygon_math-1.3.3.tar.gz |
|---|---|
| Size | 9.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d3971fd44e9aec3fbe2b7a37b3a87493d5ba79e44005eae860037648bc3791b2
|
|
BLAKE2b-256 checksum How to use checksums |
e0ed45a839fc5ceca0c6b3e1972d62f23aeee42bdbbf9454dfeb74df2c34a0ab
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.2
|
Release files / polygon_math-1.3.3-py3-none-any.whl
| Download URL | polygon_math-1.3.3-py3-none-any.whl |
|---|---|
| Size | 9.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f893b9cbee67779deed98e03c5b7fc50c4452de00e34d0c40260ca4521294368
|
|
BLAKE2b-256 checksum How to use checksums |
53454d49e660100f061a5987e95946730f6a314699ae17e29b63355ee538d253
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.2
|