An open API service indexing awesome lists of open source software.

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

Awesome Lists containing this project

README

          

# decomp

[![Build status](https://ci.appveyor.com/api/projects/status/485fudsl4vv5ikfy?svg=true)](https://ci.appveyor.com/project/ltjax/decomp)
[![Build Status](https://api.travis-ci.org/ltjax/decomp.svg?branch=master)](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:

![](demo/demo.png)