libosmscout
1.1.1
Toggle main menu visibility
Loading...
Searching...
No Matches
libosmscout-map-opengl
include
poly2tri
sweep
advancing_front.h
Go to the documentation of this file.
1
/*
2
* Poly2Tri Copyright (c) 2009-2010, Poly2Tri Contributors
3
* http://code.google.com/p/poly2tri/
4
*
5
* All rights reserved.
6
*
7
* Redistribution and use in source and binary forms, with or without modification,
8
* are permitted provided that the following conditions are met:
9
*
10
* * Redistributions of source code must retain the above copyright notice,
11
* this list of conditions and the following disclaimer.
12
* * Redistributions in binary form must reproduce the above copyright notice,
13
* this list of conditions and the following disclaimer in the documentation
14
* and/or other materials provided with the distribution.
15
* * Neither the name of Poly2Tri nor the names of its contributors may be
16
* used to endorse or promote products derived from this software without specific
17
* prior written permission.
18
*
19
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
23
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
24
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
25
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
26
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
27
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
28
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
29
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
*/
31
32
#ifndef ADVANCED_FRONT_H
33
#define ADVANCED_FRONT_H
34
35
#include <
poly2tri/common/shapes.h
>
36
37
namespace
p2t
{
38
39
struct
Node
;
40
41
// Advancing front node
42
struct
Node
{
43
Point
*
point
;
44
Triangle
*
triangle
;
45
46
Node
*
next
;
47
Node
*
prev
;
48
49
double
value
;
50
51
explicit
Node
(
Point
& p) :
point
(&p),
triangle
(nullptr),
next
(nullptr),
prev
(nullptr),
value
(p.x)
52
{
53
}
54
55
Node
(
Point
& p,
Triangle
& t) :
point
(&p),
triangle
(&t),
next
(nullptr),
prev
(nullptr),
value
(p.x)
56
{
57
}
58
59
};
60
61
// Advancing front
62
class
AdvancingFront
{
63
public
:
64
65
AdvancingFront
(
Node
&
head
,
Node
&
tail
);
66
// Destructor
67
~AdvancingFront
();
68
69
Node
*
head
();
70
void
set_head
(
Node
* node);
71
Node
*
tail
();
72
void
set_tail
(
Node
* node);
73
Node
*
search
();
74
void
set_search
(
Node
* node);
75
77
Node
*
LocateNode
(
const
double
& x);
78
79
Node
*
LocatePoint
(
const
Point
* point);
80
81
private
:
82
83
Node
* head_, *tail_, *search_node_;
84
85
Node
* FindSearchNode(
const
double
& x);
86
};
87
88
inline
Node
*
AdvancingFront::head
()
89
{
90
return
head_;
91
}
92
inline
void
AdvancingFront::set_head
(
Node
* node)
93
{
94
head_ = node;
95
}
96
97
inline
Node
*
AdvancingFront::tail
()
98
{
99
return
tail_;
100
}
101
inline
void
AdvancingFront::set_tail
(
Node
* node)
102
{
103
tail_ = node;
104
}
105
106
inline
Node
*
AdvancingFront::search
()
107
{
108
return
search_node_;
109
}
110
111
inline
void
AdvancingFront::set_search
(
Node
* node)
112
{
113
search_node_ = node;
114
}
115
116
}
117
118
#endif
p2t::AdvancingFront::set_head
void set_head(Node *node)
Definition
advancing_front.h:92
p2t::AdvancingFront::head
Node * head()
Definition
advancing_front.h:88
p2t::AdvancingFront::set_search
void set_search(Node *node)
Definition
advancing_front.h:111
p2t::AdvancingFront::LocateNode
Node * LocateNode(const double &x)
Locate insertion point along advancing front.
p2t::AdvancingFront::set_tail
void set_tail(Node *node)
Definition
advancing_front.h:101
p2t::AdvancingFront::tail
Node * tail()
Definition
advancing_front.h:97
p2t::AdvancingFront::search
Node * search()
Definition
advancing_front.h:106
p2t::AdvancingFront::AdvancingFront
AdvancingFront(Node &head, Node &tail)
p2t::AdvancingFront::~AdvancingFront
~AdvancingFront()
p2t::AdvancingFront::LocatePoint
Node * LocatePoint(const Point *point)
p2t::Triangle
Definition
shapes.h:150
p2t
Definition
shapes.h:41
shapes.h
p2t::Node
Definition
advancing_front.h:42
p2t::Node::point
Point * point
Definition
advancing_front.h:43
p2t::Node::triangle
Triangle * triangle
Definition
advancing_front.h:44
p2t::Node::prev
Node * prev
Definition
advancing_front.h:47
p2t::Node::next
Node * next
Definition
advancing_front.h:46
p2t::Node::Node
Node(Point &p)
Definition
advancing_front.h:51
p2t::Node::value
double value
Definition
advancing_front.h:49
p2t::Node::Node
Node(Point &p, Triangle &t)
Definition
advancing_front.h:55
p2t::Point
Definition
shapes.h:45
Generated by
1.17.0