Skip to content

Commit bb71959

Browse files
Add performant triangulation for napari shapes (#36)
* fix annotation warnings * add code for finding edge intersection * initial implementation for convex polygons * move part of conde to c++ * avoid name collision * fix bug in code * rewrtte finding intersection to c++ * rewrite is_convex * rewrite triangle convex polygon * simplify code * clang-format * split functions and define helper functions * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * start implementing sweeping line triangulation * implementation part 2 * reformat file * describe steeps * improve code structure * fix type annotation * add triangulate to install targets * fix configuration and fix code * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * fix warning in code * next style fixes * refactor code for better readability * clarify code * Fix finding intersections * udpate docstrings * add comparator for left to righe edges order, start fixing finding intersections * comment out debug build * move between computers * fixing intersection part 2 * use simple workaround for intersection edge case * fix addin intersection points to polygon * add monotone polygon triangulation * polygon split initial * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * initial implementation of sweeping line triangulation * fix orientation of triangles * use c++ code for triangulation * more verbose test run * fix checking of point dupplication * Fix basic bugs * first test for triangulation * add basic test and fix left-right detection * add intersection points * fix point repetition bugs * add problematic test * fix macos specific bug * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * fix intersection for colinear points * try fix linux compilation fail * add next test * single place to define coordinate type * cleanup code * fix IDE warnings * fix another bug * add missed import * fix remaining bug * cleanup code * more clanup * add initial implementation of triangulating edge * initialimplementation of edge triangulation * add test and fix triangles * add triangulation of edges * addres part of remarks from code review * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * use memory view for triangulation call * use memory view for speedup * improve code based on review * more fixes * use shared pointer and weak pointer to manage memory * fix exception message * do not use raw pointer * split function get_left_right_edges on two * fix empty edge case --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
1 parent cab7b02 commit bb71959

9 files changed

Lines changed: 3065 additions & 3 deletions

File tree

CMakeLists.txt

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
cmake_minimum_required(VERSION 3.21)
22
project(${SKBUILD_PROJECT_NAME} LANGUAGES CXX)
33

4-
set(CMAKE_CXX_STANDARD 11)
4+
set(CMAKE_CXX_STANDARD 17)
5+
set(CMAKE_CXX_FLAGS_DEBUG_INIT "-DDEBUG -g")
6+
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g -DDEBUG")
7+
58

69
# Define compiler directive
710
add_definitions(-DNPY_NO_DEPRECATED_API=NPY_1_7_API_VERSION)
@@ -103,6 +106,18 @@ python_add_library(_napari_mapping MODULE "${napari_mapping_cython_cxx}" WITH_SO
103106
target_include_directories(_napari_mapping PRIVATE "${NUMPY_INCLUDE_DIR}")
104107
target_link_libraries(_napari_mapping PRIVATE OpenMP::OpenMP_CXX)
105108

109+
cython_transpile(src/PartSegCore_compiled_backend/triangulate.pyx LANGUAGE CXX OUTPUT_VARIABLE triangulate_cython_cxx)
110+
python_add_library(
111+
triangulate MODULE
112+
"${triangulate_cython_cxx}"
113+
src/PartSegCore_compiled_backend/triangulation/triangulate.hpp
114+
src/PartSegCore_compiled_backend/triangulation/intersection.hpp
115+
src/PartSegCore_compiled_backend/triangulation/point.hpp
116+
src/PartSegCore_compiled_backend/triangulation/debug_util.hpp
117+
WITH_SOABI)
118+
target_include_directories(triangulate PRIVATE "${NUMPY_INCLUDE_DIR}")
119+
target_include_directories(triangulate PRIVATE src/PartSegCore_compiled_backend/)
120+
106121

107122
install(TARGETS euclidean_cython DESTINATION PartSegCore_compiled_backend/sprawl_utils)
108123
install(TARGETS path_sprawl_cython DESTINATION PartSegCore_compiled_backend/sprawl_utils)
@@ -113,3 +128,4 @@ install(TARGETS calc_bounds DESTINATION PartSegCore_compiled_backend)
113128
install(TARGETS mso_bind DESTINATION PartSegCore_compiled_backend/multiscale_opening)
114129
install(TARGETS _fast_unique DESTINATION PartSegCore_compiled_backend)
115130
install(TARGETS _napari_mapping DESTINATION PartSegCore_compiled_backend)
131+
install(TARGETS triangulate DESTINATION PartSegCore_compiled_backend)

pyproject.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ sdist.include = ["src/PartSegCore_compiled_backend/version.py"]
99
cmake.version = ">=3.21"
1010
sdist.exclude = [".github", "tox.ini", "build_utils", "notebooks", ".readthedocs.yaml"]
1111
wheel.exclude = ["**.pyx"]
12+
#cmake.build-type = "Debug"
1213

1314

1415
[project]
@@ -139,7 +140,8 @@ quote-style = "single"
139140
indent-style = "space"
140141
docstring-code-format = true
141142
line-ending = "lf"
142-
skip-magic-trailing-comma = true
143+
skip-magic-trailing-comma = false
144+
143145

144146
[tool.ruff.lint]
145147
select = [

0 commit comments

Comments
 (0)