Skip to content
/ decomp Public

Triangulation and convex decomposition of polygonal meshes

License

Notifications You must be signed in to change notification settings

ltjax/decomp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

c79f7b3 · Feb 6, 2025
May 21, 2020
Apr 13, 2020
Oct 7, 2022
May 3, 2020
Feb 6, 2025
Apr 5, 2020
Apr 5, 2020
Feb 6, 2025
Apr 5, 2020
Jul 12, 2019
Apr 13, 2020
Aug 1, 2017
Oct 7, 2022
Feb 6, 2025

Repository files navigation

decomp

Build status Build Status

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:

std::vector<Point> 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<std::uint16_t> outerPolygon={
  0, 1, 2, 3, 4, 5
};

std::vector<std::vector<std::uint16_t>> holeList={
  {13, 12, 11, 10},
  {9, 8, 7, 6}
};

auto convexPolygonList=decompose(pointList, outerPolygon, holeList);

It produces the following decomposition: