Skip to main content

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)

Source distribution for polygon-math 1.3.3
File Size Uploaded
polygon_math-1.3.3.tar.gz 9.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for polygon-math 1.3.3
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

1.3.3 This release

2 release files

1.3.2

2 release files

1.3.1

2 release files

1.3.0

2 release files

1.2.1

2 release files

1.2.0

2 release files

1.1.1

2 release files

1.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page