{"id":19705720,"url":"https://github.com/llnl/polyclipper","last_synced_at":"2025-04-29T15:31:12.083Z","repository":{"id":44153340,"uuid":"273569747","full_name":"LLNL/PolyClipper","owner":"LLNL","description":"PolyClipper provides methods to clip arbitrary polygons (in 2D) and polyhedra (in 3D) by planes.","archived":false,"fork":false,"pushed_at":"2024-10-14T21:27:46.000Z","size":694,"stargazers_count":22,"open_issues_count":3,"forks_count":2,"subscribers_count":6,"default_branch":"master","last_synced_at":"2024-11-02T04:16:27.761Z","etag":null,"topics":["math-physics"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/LLNL.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2020-06-19T19:17:46.000Z","updated_at":"2024-06-10T15:19:46.000Z","dependencies_parsed_at":"2024-01-10T20:24:44.383Z","dependency_job_id":"2afcfda6-fc9d-409d-830c-8a3ce936007d","html_url":"https://github.com/LLNL/PolyClipper","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LLNL%2FPolyClipper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LLNL%2FPolyClipper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LLNL%2FPolyClipper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LLNL%2FPolyClipper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LLNL","download_url":"https://codeload.github.com/LLNL/PolyClipper/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224178671,"owners_count":17268928,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["math-physics"],"created_at":"2024-11-11T21:29:54.937Z","updated_at":"2024-11-11T21:29:55.739Z","avatar_url":"https://github.com/LLNL.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"PolyClipper\n==============\n\nPolyClipper is a C++ reimplementation of the geometric clipping operations in the [R3D](https://github.com/devonmpowell/r3d) library originally written by Devon Powell, as documented in the paper\n[Powell \u0026 Abell (2015)](http://www.sciencedirect.com/science/article/pii/S0021999115003563).\n\nThe main focus here is on clipping polygons (in 2D (x,y) coordinates) and polyhedra (in 3D (x,y,z) coordinates) with planes, returning new polygons/polyhedra as the result of this clipping.  The input polygons/polyhedra may be non-convex and arbitrarily complex, but the only clipping operation supported is with planes.  This is equivalent to intersecting one arbitrary (not necessarily convex) polygon/polyhedron with a convex polygon/polyhedron.\n\nPolyClipper reimplements these clipping operations from R3D for two reasons:\n  * PolyClipper removes the hard-coded size limitations of R3D on the number of vertices/complexity of the polygons and polyhedra.\n  * PolyClipper also removes the assumption that each vertex in 3D has exactly three neighbors (as well as the related limitation of two neighbors in 2D) -- the number of neighbors per vertex is now arbitrary.  This also removes the complexity of requiring degenerate/redundant vertices.\n\nNote PolyClipper currently does not provide the generalized voxelization or arbitrary integrals over polygons/polyhedra as provided in R3D.   These would be straightforward to add, but were not necessary for the authors needs from the library, which is to generalize the clipping algorithms.  The only method of this sort provided by PolyClipper is the ability to do the zeroth and first moment integrals over the polygons/polyhedra.\n\nPolyClipper currently provides both C++ and Python interfaces.\n\nDocumentation\n-------------\n\nPolyClipper is documented at [readthedocs](https://PolyClipper.readthedocs.io/en/latest/).\n\nNote the source for this documentation is embedded in the PolyClipper repository under docs/.\n\nContributions\n-------------\n\nContributions are welcome, and should be provided as pull requests to the main repository.  Note all contributions must be provided under the same license for distribution (in this case the BSD license).\n\nLicense\n-------\n\nPolyClipper is released under the [BSD license](https://github.com/LLNL/PolyClipper/blob/master/LICENSE).\n\nLLNL-CODE-811676\n\nSPDX-License-Identifier: BSD-3\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fllnl%2Fpolyclipper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fllnl%2Fpolyclipper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fllnl%2Fpolyclipper/lists"}