|
1 | 1 | #include <delaunator.hpp> |
2 | | -#include <cstdio> |
| 2 | +#include <iostream> |
| 3 | +#include <string> |
3 | 4 |
|
4 | 5 | int main() { |
| 6 | + using namespace delaunator; |
| 7 | + |
5 | 8 | /* 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}; |
7 | 11 |
|
8 | 12 | //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"; |
21 | 44 | } |
22 | 45 | } |
0 commit comments