Skip to content

Commit d95b3fa

Browse files
committed
Improve basic example.
1 parent 8e95f0c commit d95b3fa

File tree

2 files changed

+42
-15
lines changed

2 files changed

+42
-15
lines changed

CMakeLists.txt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,11 @@ add_subdirectory(test)
2323

2424
#examples
2525
#add_executable(triangulate-geojson examples/triangulate_geojson.cpp include/delaunator.cpp)
26-
#add_executable(basic examples/basic.cpp include/delaunator.cpp)
26+
add_executable(basic examples/basic.cpp include/delaunator.cpp)
27+
target_include_directories(basic
28+
PRIVATE
29+
include
30+
)
2731

2832
#set(CPACK_PROJECT_NAME ${PROJECT_NAME})
2933
#set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})

examples/basic.cpp

Lines changed: 37 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,45 @@
11
#include <delaunator.hpp>
2-
#include <cstdio>
2+
#include <iostream>
3+
#include <string>
34

45
int main() {
6+
using namespace delaunator;
7+
58
/* x0, y0, x1, y1, ... */
6-
std::vector<double> coords = {-1, 1, 1, 1, 1, -1, -1, -1};
9+
std::vector<double> coords = {-3, 1, -1, 1, 1, 1, 3, 1,
10+
3, -1, 1, -1, -1, -1, -3, -1};
711

812
//triangulation happens here
9-
delaunator::Delaunator d(coords);
10-
11-
for(std::size_t i = 0; i < d.triangles.size(); i+=3) {
12-
printf(
13-
"Triangle points: [[%f, %f], [%f, %f], [%f, %f]]\n",
14-
d.coords[2 * d.triangles[i]], //tx0
15-
d.coords[2 * d.triangles[i] + 1], //ty0
16-
d.coords[2 * d.triangles[i + 1]], //tx1
17-
d.coords[2 * d.triangles[i + 1] + 1],//ty1
18-
d.coords[2 * d.triangles[i + 2]], //tx2
19-
d.coords[2 * d.triangles[i + 2] + 1] //ty2
20-
);
13+
Delaunator d(coords);
14+
15+
auto xcoord = [&d](size_t tri, int coord) -> double
16+
{
17+
size_t index = d.triangles[tri + coord];
18+
return d.coords[2 * index];
19+
};
20+
21+
auto ycoord = [&d](size_t tri, int coord) -> double
22+
{
23+
size_t index = d.triangles[tri + coord];
24+
return d.coords[2 * index + 1];
25+
};
26+
27+
for (std::size_t i = 0; i < d.triangles.size(); i += 3) {
28+
std::cout << "Triangle " << (i / 3) << " points: [[" <<
29+
xcoord(i, 0) << ", " << ycoord(i, 0) << "], [" <<
30+
xcoord(i, 1) << ", " << ycoord(i, 1) << "], [" <<
31+
xcoord(i, 2) << ", " << ycoord(i, 2) << "]]\n";
32+
}
33+
34+
auto adjTriangle = [&d](size_t edge) -> std::string
35+
{
36+
size_t adj = d.halfedges[edge];
37+
return adj == INVALID_INDEX ? "None" : std::to_string(adj / 3);
38+
};
39+
40+
for (std::size_t i = 0; i < d.triangles.size(); i += 3)
41+
{
42+
std::cerr << "Adjacent triangles for triangle number " << (i / 3) << ": " <<
43+
adjTriangle(i) << ", " << adjTriangle(i + 1) << " and " << adjTriangle(i + 2) << "\n";
2144
}
2245
}

0 commit comments

Comments
 (0)