|
Aleph-w 3.0
A C++ Library for Data Structures and Algorithms
|
A vertex in a polygon's doubly-linked vertex list. More...
#include <polygon.H>
Public Member Functions | |
| Vertex () | |
| Default constructor. Creates a vertex at origin (0, 0). | |
| Vertex (const Point &point) | |
| Construct a vertex from a Point. | |
| Vertex (const Vertex &vertex) | |
| Copy constructor. | |
| Vertex & | operator= (const Vertex &vertex) |
| Copy assignment operator. | |
| const Vertex & | prev_vertex () const |
| Get the previous vertex in the polygon. | |
| const Vertex & | next_vertex () const |
| Get the next vertex in the polygon. | |
Public Member Functions inherited from Aleph::Dlink | |
| template<typename T > | |
| Dnode< T > * | to_dnode () noexcept |
| template<typename T > | |
| const Dnode< T > * | to_dnode () const noexcept |
| template<typename T > | |
| T & | to_data () noexcept |
| template<typename T > | |
| const T & | to_data () const noexcept |
| Dlink () noexcept | |
| Initialize a node or an empty list. | |
| Dlink (const Dlink &l) noexcept | |
| Copy constructor. | |
| void | swap (Dlink *link) noexcept |
Swap this with list whose header is link. | |
| void | swap (Dlink &l) noexcept |
Swap this with list whose header is l. | |
| Dlink (Dlink &&l) noexcept | |
| Construct a new list with the items of l moved. | |
| Dlink & | operator= (const Dlink &l) noexcept |
| Copy assignation. | |
| Dlink & | operator= (Dlink &&l) noexcept |
| Move assignation. | |
| void | reset () noexcept |
Reset this | |
| void | init () noexcept |
| constexpr bool | is_empty () const noexcept |
Return true if this (as header node) is empty. | |
| constexpr bool | is_unitarian () const noexcept |
Return true if this (as header node) has exactly one element. | |
| constexpr bool | is_unitarian_or_empty () const noexcept |
Return true if this (as header node) has zero or one element. | |
| void | insert (Dlink *node) noexcept |
Insert node after this. | |
| void | push (Dlink *node) noexcept |
| void | append (Dlink *node) noexcept |
Insert node before this. | |
| Dlink *& | get_next () const noexcept |
Return the link that is after this | |
| Dlink *& | get_prev () const noexcept |
Return the link that is before this | |
| constexpr Dlink *& | get_first_ne () const noexcept |
If this is a header node, it return the first node of this | |
| constexpr Dlink *& | get_last_ne () const noexcept |
If this is a header node, it return the last node of this | |
| constexpr Dlink *& | get_first () const noexcept |
If this is a header node, it return the first node of this | |
| constexpr Dlink *& | get_last () const noexcept |
If this is a header node, it return the last node of this | |
| void | wrap_header (Dlink *l) noexcept |
| Wrap a header to a list (without header). | |
| void | insert_list (Dlink *head) noexcept |
Insert the list head before this | |
| void | append_list (Dlink *head) noexcept |
Insert the list head after this | |
| void | splice (Dlink *l) noexcept |
Insert a list l without header node after the node this. | |
| void | concat_list (Dlink *head) noexcept |
Concatenate list head to list this | |
| void | concat_list (Dlink &head) noexcept |
| Dlink * | del () noexcept |
Remove this from the list. this must not be a header node. | |
| void | erase () noexcept |
| Dlink * | remove_prev () noexcept |
Remove the item that is before this | |
| Dlink * | remove_next () noexcept |
Remove the item that is after this | |
| Dlink * | remove_last_ne () noexcept |
| Dlink * | remove_first_ne () noexcept |
| Dlink * | remove_last () noexcept |
| Dlink * | remove_first () noexcept |
| Dlink * | top () const |
| Dlink * | pop () |
| size_t | reverse_list () noexcept |
| Reverse the list. | |
| size_t | reverse () noexcept |
| size_t | split_list_ne (Dlink &l, Dlink &r) noexcept |
Split this in the middle in two lists. | |
| size_t | split_list (Dlink &l, Dlink &r) noexcept |
| Dlink | cut_list (Dlink *link) noexcept |
Cut this from link. | |
| void | remove_all_and_delete () noexcept |
| Remove and free memory for all the items of list. | |
| void | rotate_left (size_t n) |
| Rotate to left the list n positions. | |
| void | rotate_right (size_t n) |
| Analogous to rotate_left() but to right. | |
| bool | check () |
Return true if the list is consistent. | |
Static Public Member Functions | |
| static Vertex * | dlink_to_vertex (Dlink *link) |
| Convert a Dlink pointer to a Vertex pointer. | |
| static const Vertex * | dlink_to_vertex (const Dlink *link) |
| Convert a const Dlink pointer to a const Vertex pointer. | |
Additional Inherited Members | |
Protected Attributes inherited from Aleph::Dlink | |
| Dlink * | prev |
| Dlink * | next |
A vertex in a polygon's doubly-linked vertex list.
The Vertex class combines a 2D point with doubly-linked list capabilities. This allows polygons to store their vertices as an intrusive linked list while each vertex retains full Point functionality.
|
inline |
Convert a Dlink pointer to a Vertex pointer.
| link | Pointer to a Dlink that is actually a Vertex. |
link actually points to a Vertex. Definition at line 148 of file polygon.H.
Referenced by Polygon::copy_points(), Polygon::delete_points(), Polygon::Segment_Iterator::get_current_segment(), Polygon::Vertex_Iterator::get_current_vertex(), Polygon::get_first_vertex(), Polygon::get_last_vertex(), Polygon::get_next_vertex(), Polygon::get_prev_vertex(), next_vertex(), prev_vertex(), TEST_F(), and TEST_F().
Get the next vertex in the polygon.
| std::domain_error | If this is the only vertex in the list. |
Definition at line 179 of file polygon.H.
References ah_domain_error_if, dlink_to_vertex(), Aleph::Dlink::get_next(), Aleph::Dlink::is_empty(), Aleph::Dlink::is_unitarian(), and Aleph::maps().
Referenced by Polygon::Segment_Iterator::get_current_segment(), Polygon::get_next_vertex(), and Aleph::CuttingEarsTriangulation::operator()().
Get the previous vertex in the polygon.
| std::domain_error | If this is the only vertex in the list. |
Definition at line 165 of file polygon.H.
References ah_domain_error_if, dlink_to_vertex(), Aleph::Dlink::get_prev(), Aleph::Dlink::is_empty(), Aleph::Dlink::is_unitarian(), and Aleph::maps().
Referenced by Polygon::get_prev_vertex().