Skip to content

Commit 6853e94

Browse files
committed
Added C++ constrained delaunay triangulation module
1 parent 386e77a commit 6853e94

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

65 files changed

+2268
-2268
lines changed

CPP/CMakeLists.txt

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -48,12 +48,14 @@ set(CLIPPER2_INC
4848
${CLIPPER2_INC_FOLDER}/clipper.minkowski.h
4949
${CLIPPER2_INC_FOLDER}/clipper.offset.h
5050
${CLIPPER2_INC_FOLDER}/clipper.rectclip.h
51+
${CLIPPER2_INC_FOLDER}/clipper.triangulation.h
5152
)
5253

5354
set(CLIPPER2_SRC
5455
Clipper2Lib/src/clipper.engine.cpp
5556
Clipper2Lib/src/clipper.offset.cpp
5657
Clipper2Lib/src/clipper.rectclip.cpp
58+
Clipper2Lib/src/clipper.triangulation.cpp
5759
)
5860

5961
set(CLIPPER2_LIBS "") # one or both of Clipper2/Clipper2Z
@@ -188,6 +190,7 @@ if(CLIPPER2_EXAMPLES)
188190
RectClipping
189191
SimpleClipping
190192
VariableOffset
193+
Triangulation
191194
)
192195

193196
foreach(ex ${EXAMPLES})
@@ -196,6 +199,8 @@ if(CLIPPER2_EXAMPLES)
196199
endforeach()
197200

198201
file(COPY Examples/Inflate/rabbit.svg DESTINATION ${CMAKE_BINARY_DIR} FILE_PERMISSIONS OWNER_READ GROUP_READ WORLD_READ )
202+
file(COPY Examples/Triangulation/TriSamples DESTINATION ${CMAKE_BINARY_DIR} FILE_PERMISSIONS OWNER_READ GROUP_READ WORLD_READ )
203+
199204
list(APPEND ALL_EXAMPLES ${EXAMPLES})
200205
endif()
201206

@@ -224,19 +229,20 @@ if(CLIPPER2_TESTS)
224229
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
225230
endif()
226231
set(BUILD_GMOCK OFF)
227-
if(USE_EXTERNAL_GTEST)
228-
find_package(GTest REQUIRED)
229-
else()
230-
include(GoogleTest)
231-
if(NOT EXISTS ${PROJECT_SOURCE_DIR}/Tests/googletest)
232-
execute_process(
233-
COMMAND "git" "clone" "https://github.com/google/googletest"
234-
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/Tests
235-
)
232+
233+
if(USE_EXTERNAL_GTEST)
234+
find_package(GTest REQUIRED)
235+
else()
236+
include(GoogleTest)
237+
if(NOT EXISTS ${PROJECT_SOURCE_DIR}/Tests/googletest)
238+
execute_process(
239+
COMMAND "git" "clone" "https://github.com/google/googletest"
240+
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/Tests
241+
)
242+
endif()
243+
add_subdirectory("${PROJECT_SOURCE_DIR}/Tests/googletest/")
244+
set_target_properties(gtest gtest_main PROPERTIES FOLDER GTest)
236245
endif()
237-
add_subdirectory("${PROJECT_SOURCE_DIR}/Tests/googletest/")
238-
set_target_properties(gtest gtest_main PROPERTIES FOLDER GTest)
239-
endif()
240246

241247
if(TARGET gtest AND TARGET gtest_main)
242248
set(gtest_libs gtest gtest_main)
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
/*******************************************************************************
2+
* Author : Angus Johnson *
3+
* Date : 6 December 2025 *
4+
* Release : BETA RELEASE *
5+
* Website : https://www.angusj.com *
6+
* Copyright : Angus Johnson 2010-2025 *
7+
* Purpose : Delaunay Triangulation *
8+
* License : https://www.boost.org/LICENSE_1_0.txt *
9+
*******************************************************************************/
10+
11+
#ifndef CLIPPER_TRIANGULATION_H
12+
#define CLIPPER_TRIANGULATION_H
13+
14+
#include <stack>
15+
#include "clipper2/clipper.core.h"
16+
17+
namespace Clipper2Lib
18+
{
19+
20+
enum class TriangulateResult { success, fail, no_polygons, paths_intersect };
21+
22+
// Triangulate - this function will not accept intesecting paths
23+
TriangulateResult Triangulate(const Paths64& pp, Paths64& solution, bool useDelaunay = true);
24+
TriangulateResult Triangulate(const PathsD& pp, int decPlaces, PathsD& solution, bool useDelaunay = true);
25+
26+
} // Clipper2Lib namespace
27+
#endif // CLIPPER_TRIANGULATION_H

0 commit comments

Comments
 (0)