https://github.com/ltjax/decomp
Triangulation and convex decomposition of polygonal meshes
https://github.com/ltjax/decomp
decomposition decomposition-algorithm polygon
Last synced: 4 months ago
JSON representation
Triangulation and convex decomposition of polygonal meshes
- Host: GitHub
- URL: https://github.com/ltjax/decomp
- Owner: ltjax
- License: mit
- Created: 2015-08-02T13:40:51.000Z (almost 11 years ago)
- Default Branch: main
- Last Pushed: 2025-02-06T13:29:49.000Z (over 1 year ago)
- Last Synced: 2025-02-06T14:28:26.976Z (over 1 year ago)
- Topics: decomposition, decomposition-algorithm, polygon
- Language: C++
- Size: 177 KB
- Stars: 7
- Watchers: 3
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# decomp
[](https://ci.appveyor.com/project/ltjax/decomp)
[](https://travis-ci.org/ltjax/decomp)
This is a C++11 library to decompose simple 2D polygons with holes into a list of convex polygons.
It's primary application is navmesh-generation. All polygons are encoded as a list of indices
into a constant point list, so it's easy to extract connectivity information later.
Its goals are currently only robust functionality and hackability,
speed and memory consumption are of much lesser concern.
Here's a small example:
```C++
std::vector pointList={
// points on the outer polygon
{-4, 0}, {-3, -2}, {3, -2}, {4, 0}, {3, 2}, {-3, 2},
// points on the left hole
{-3, 0}, {-2, -1}, {-1, 0}, {-2, 1},
// points on the right hole
{1, 0}, {2, -1}, {3, 0}, {2, 1}
};
std::vector outerPolygon={
0, 1, 2, 3, 4, 5
};
std::vector> holeList={
{13, 12, 11, 10},
{9, 8, 7, 6}
};
auto convexPolygonList=decompose(pointList, outerPolygon, holeList);
```
It produces the following decomposition:
