diff options
author | Andrii Doroshenko (Xrayez) <xrayez@gmail.com> | 2019-05-23 16:53:53 +0300 |
---|---|---|
committer | Andrii Doroshenko (Xrayez) <xrayez@gmail.com> | 2019-05-24 13:10:13 +0300 |
commit | 24e9a881c0b5ec0c475e0992c723585ebcf1a570 (patch) | |
tree | 5d156d87f4f287e2eb85cdc32229195932b434c0 /core/math | |
parent | 1deb41226d5219346157744eed5fe85b7069c3d4 (diff) |
Expose 2D Delaunay triangulation in Geometry singleton
Can be used via scripting as `Geometry.triangulate_delaunay_2d(points)`
The interface is the same as in `Triangulate` library, returning indices
into triangulated points.
Diffstat (limited to 'core/math')
-rw-r--r-- | core/math/geometry.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/core/math/geometry.h b/core/math/geometry.h index c62573dd13..0e144e491f 100644 --- a/core/math/geometry.h +++ b/core/math/geometry.h @@ -31,6 +31,7 @@ #ifndef GEOMETRY_H #define GEOMETRY_H +#include "core/math/delaunay.h" #include "core/math/face3.h" #include "core/math/rect2.h" #include "core/math/triangulate.h" @@ -857,6 +858,19 @@ public: return points; } + static Vector<int> triangulate_delaunay_2d(const Vector<Vector2> &p_points) { + + Vector<Delaunay2D::Triangle> tr = Delaunay2D::triangulate(p_points); + Vector<int> triangles; + + for (int i = 0; i < tr.size(); i++) { + triangles.push_back(tr[i].points[0]); + triangles.push_back(tr[i].points[1]); + triangles.push_back(tr[i].points[2]); + } + return triangles; + } + static Vector<int> triangulate_polygon(const Vector<Vector2> &p_polygon) { Vector<int> triangles; |