Recti 1.2.4
Loading...
Searching...
No Matches
rpolygon_cut.hpp
Go to the documentation of this file.
1
5#pragma once
6
7#include <span>
8#include <vector>
9
10#include "point.hpp"
11
12// Forward declaration for recursive functions
13class RDllist;
14template <typename T> class Dllink;
15
16namespace recti {
17
21 template <typename T, typename Cmp>
22 auto rpolygon_cut_convex_recur(Dllink<size_t>* v1, std::vector<Point<T>>& lst, const Cmp& cmp,
23 RDllist& rdll) -> std::vector<std::vector<size_t>>;
24
28 template <typename T, typename Cmp>
29 auto rpolygon_cut_explicit_recur(Dllink<size_t>* v1, std::vector<Point<T>>& lst, const Cmp& cmp,
30 RDllist& rdll) -> std::vector<std::vector<size_t>>;
31
35 template <typename T, typename Cmp>
36 auto rpolygon_cut_implicit_recur(Dllink<size_t>* v1, std::vector<Point<T>>& lst, const Cmp& cmp,
37 RDllist& rdll) -> std::vector<std::vector<size_t>>;
38
52 template <typename T>
53 auto rpolygon_cut_convex(std::span<const Point<T>> pointset, bool is_anticlockwise)
54 -> std::vector<std::vector<Point<T>>>;
55
62 template <typename T>
63 auto rpolygon_cut_explicit(std::span<const Point<T>> pointset, bool is_anticlockwise)
64 -> std::vector<std::vector<Point<T>>>;
65
69 template <typename T>
70 auto rpolygon_cut_implicit(std::span<const Point<T>> pointset, bool is_anticlockwise)
71 -> std::vector<std::vector<Point<T>>>;
72
76 template <typename T>
77 auto rpolygon_cut_rectangle(std::span<const Point<T>> pointset, bool is_anticlockwise)
78 -> std::vector<std::vector<Point<T>>>;
79
80} // namespace recti
Circular doubly-linked list implementation.
Definition rdllist.hpp:55
Point.
Definition point.hpp:30
Definition svg_utils.hpp:12
auto rpolygon_cut_explicit(std::span< const Point< T > > pointset, bool is_anticlockwise) -> std::vector< std::vector< Point< T > > >
Cut a polygon into explicit pieces.
auto rpolygon_cut_convex_recur(Dllink< size_t > *v1, std::vector< Point< T > > &lst, const Cmp &cmp, RDllist &rdll) -> std::vector< std::vector< size_t > >
Recursive function for convex decomposition.
auto rpolygon_cut_rectangle(std::span< const Point< T > > pointset, bool is_anticlockwise) -> std::vector< std::vector< Point< T > > >
Cut a convex polygon into rectangle pieces.
auto rpolygon_cut_implicit_recur(Dllink< size_t > *v1, std::vector< Point< T > > &lst, const Cmp &cmp, RDllist &rdll) -> std::vector< std::vector< size_t > >
Recursive function for implicit decomposition.
auto rpolygon_cut_implicit(std::span< const Point< T > > pointset, bool is_anticlockwise) -> std::vector< std::vector< Point< T > > >
Cut a convex polygon into pieces according to the implicit vertices.
auto rpolygon_cut_explicit_recur(Dllink< size_t > *v1, std::vector< Point< T > > &lst, const Cmp &cmp, RDllist &rdll) -> std::vector< std::vector< size_t > >
Recursive function for explicit decomposition.
auto rpolygon_cut_convex(std::span< const Point< T > > pointset, bool is_anticlockwise) -> std::vector< std::vector< Point< T > > >
Cut a rectilinear polygon into convex pieces.
2D Point template class supporting intervals, arithmetic, and geometric queries.