Simple doubly-connected edge list structure. 更多...
#include <DoublyConnectedEdgeList.h>
类 | |
struct | Face |
struct | HalfEdge |
struct | Node |
Public 类型 | |
using | ConstFaceIterator = typename FaceContainer::const_iterator |
using | ConstHalfEdgeIterator = typename HalfEdgeContainer::const_iterator |
using | ConstNodeIterator = typename NodeContainer::const_iterator |
using | FaceContainer = std::list<Face> |
using | FaceIterator = typename FaceContainer::iterator |
using | HalfEdgeContainer = std::list<HalfEdge> |
using | HalfEdgeIterator = typename HalfEdgeContainer::iterator |
using | NodeContainer = std::list<Node> |
using | NodeIterator = typename NodeContainer::iterator |
using | Position = MapGen::Position<int32> |
Public 成员函数 | |
DoublyConnectedEdgeList (const Position &Position0, const Position &Position1) | |
Create a DoublyConnectedEdgeList with two nodes, two edges and one face. | |
template<size_t N> | |
DoublyConnectedEdgeList (const std::array< Position, N > &Cycle) | |
Create a DoublyConnectedEdgeList consisting of a cycle of N nodes. | |
~DoublyConnectedEdgeList () | |
Adding elements to the graph ----------------------------------— | |
Node & | AddNode (const Position &NodePosition, Node &OtherNode) |
{ | |
Node & | SplitEdge (const Position &Position, HalfEdge &HalfEdge) |
Split HalfEdge (and its pair) at Position. | |
Face & | ConnectNodes (Node &Node0, Node &Node1) |
Connect two nodes by a pair of edges. | |
Counting graph elements ---------------------------------------— | |
size_t | CountNodes () const |
size_t | CountHalfEdges () const |
size_t | CountFaces () const |
Accessing graph elements --------------------------------------— | |
ListView< NodeIterator > | GetNodes () |
ListView< ConstNodeIterator > | GetNodes () const |
ListView< HalfEdgeIterator > | GetHalfEdges () |
ListView< ConstHalfEdgeIterator > | GetHalfEdges () const |
ListView< FaceIterator > | GetFaces () |
ListView< ConstFaceIterator > | GetFaces () const |
静态 Public 成员函数 | |
Accessing graph pointers --------------------------------------— | |
static Node & | GetSource (HalfEdge &halfEdge) |
static const Node & | GetSource (const HalfEdge &halfEdge) |
static Node & | GetTarget (HalfEdge &halfEdge) |
static const Node & | GetTarget (const HalfEdge &halfEdge) |
static HalfEdge & | GetPair (HalfEdge &halfEdge) |
static const HalfEdge & | GetPair (const HalfEdge &halfEdge) |
static Face & | GetFace (HalfEdge &halfEdge) |
static const Face & | GetFace (const HalfEdge &halfEdge) |
static HalfEdge & | GetLeavingHalfEdge (Node &node) |
static const HalfEdge & | GetLeavingHalfEdge (const Node &node) |
static HalfEdge & | GetHalfEdge (Face &face) |
static const HalfEdge & | GetHalfEdge (const Face &face) |
static HalfEdge & | GetNextInFace (HalfEdge &halfEdge) |
static const HalfEdge & | GetNextInFace (const HalfEdge &halfEdge) |
static HalfEdge & | GetNextInNode (HalfEdge &halfEdge) |
static const HalfEdge & | GetNextInNode (const HalfEdge &halfEdge) |
Other member functions ----------------------------------------— | |
static float | GetAngle (const HalfEdge &halfEdge) |
Return the angle [-pi, pi] of the half-edge. | |
Private 属性 | |
FaceContainer | Faces |
HalfEdgeContainer | HalfEdges |
NodeContainer | Nodes |
额外继承的成员函数 | |
Private 成员函数 继承自 NonCopyable | |
NonCopyable ()=default | |
NonCopyable (const NonCopyable &)=delete | |
void | operator= (const NonCopyable &)=delete |
Simple doubly-connected edge list structure.
It only allows adding elements, not removing them.
在文件 DoublyConnectedEdgeList.h 第 20 行定义.
using MapGen::DoublyConnectedEdgeList::ConstFaceIterator = typename FaceContainer::const_iterator |
在文件 DoublyConnectedEdgeList.h 第 86 行定义.
using MapGen::DoublyConnectedEdgeList::ConstHalfEdgeIterator = typename HalfEdgeContainer::const_iterator |
在文件 DoublyConnectedEdgeList.h 第 82 行定义.
using MapGen::DoublyConnectedEdgeList::ConstNodeIterator = typename NodeContainer::const_iterator |
在文件 DoublyConnectedEdgeList.h 第 78 行定义.
using MapGen::DoublyConnectedEdgeList::FaceContainer = std::list<Face> |
在文件 DoublyConnectedEdgeList.h 第 84 行定义.
using MapGen::DoublyConnectedEdgeList::FaceIterator = typename FaceContainer::iterator |
在文件 DoublyConnectedEdgeList.h 第 85 行定义.
using MapGen::DoublyConnectedEdgeList::HalfEdgeContainer = std::list<HalfEdge> |
在文件 DoublyConnectedEdgeList.h 第 80 行定义.
using MapGen::DoublyConnectedEdgeList::HalfEdgeIterator = typename HalfEdgeContainer::iterator |
在文件 DoublyConnectedEdgeList.h 第 81 行定义.
using MapGen::DoublyConnectedEdgeList::NodeContainer = std::list<Node> |
在文件 DoublyConnectedEdgeList.h 第 76 行定义.
using MapGen::DoublyConnectedEdgeList::NodeIterator = typename NodeContainer::iterator |
在文件 DoublyConnectedEdgeList.h 第 77 行定义.
using MapGen::DoublyConnectedEdgeList::Position = MapGen::Position<int32> |
在文件 DoublyConnectedEdgeList.h 第 28 行定义.
|
explicit |
Create a DoublyConnectedEdgeList with two nodes, two edges and one face.
在文件 DoublyConnectedEdgeList.cpp 第 74 行定义.
|
inlineexplicit |
Create a DoublyConnectedEdgeList consisting of a cycle of N nodes.
在文件 DoublyConnectedEdgeList.h 第 99 行定义.
MapGen::DoublyConnectedEdgeList::~DoublyConnectedEdgeList | ( | ) |
在文件 DoublyConnectedEdgeList.cpp 第 102 行定义.
DoublyConnectedEdgeList::Node & MapGen::DoublyConnectedEdgeList::AddNode | ( | const Position & | NodePosition, |
Node & | OtherNode ) |
{
Add a node at NodePosition and attach it to OtherNode.
The time complexity is O(n*log(n)) where n is the number of edges leaving OtherNode.
在文件 DoublyConnectedEdgeList.cpp 第 113 行定义.
引用了 MapGen::DoublyConnectedEdgeList::HalfEdge::Face, MapGen::FindPositionInNode(), HalfEdges, MapGen::DoublyConnectedEdgeList::HalfEdge::Next, Nodes , 以及 MapGen::DoublyConnectedEdgeList::HalfEdge::Pair.
DoublyConnectedEdgeList::Face & MapGen::DoublyConnectedEdgeList::ConnectNodes | ( | Node & | Node0, |
Node & | Node1 ) |
Connect two nodes by a pair of edges.
It is assumed that both nodes are connected by the same face.
The time complexity is O(n0*log(n0) + n1*log(n1) + nf) where n0 and n1 are the number of edges leaving Node0 and Node1 respectively, and nf is the number of edges in the face containing both nodes.
在文件 DoublyConnectedEdgeList.cpp 第 194 行定义.
引用了 MapGen::DoublyConnectedEdgeList::HalfEdge::Face, Faces, MapGen::FindPositionInNode(), GetHalfEdge(), GetNextInFace(), MapGen::DoublyConnectedEdgeList::Face::HalfEdge, HalfEdges, MapGen::DoublyConnectedEdgeList::HalfEdge::Next , 以及 MapGen::DoublyConnectedEdgeList::HalfEdge::Pair.
被这些函数引用 MapGen::splitFace().
|
inline |
在文件 DoublyConnectedEdgeList.h 第 161 行定义.
被这些函数引用 MapGen::GraphParser::GraphParser() , 以及 MapGen::randomize().
|
inline |
在文件 DoublyConnectedEdgeList.h 第 156 行定义.
被这些函数引用 MapGen::GraphParser::GraphParser() , 以及 MapGen::randomize().
|
inline |
在文件 DoublyConnectedEdgeList.h 第 151 行定义.
被这些函数引用 MapGen::GraphParser::GraphParser() , 以及 MapGen::randomize().
|
static |
Return the angle [-pi, pi] of the half-edge.
在文件 DoublyConnectedEdgeList.cpp 第 250 行定义.
引用了 MapGen::DoublyConnectedEdgeList::Node::GetPosition(), GetSource() , 以及 GetTarget().
被这些函数引用 MapGen::FindPositionInNode() , 以及 MapGen::fixGraphData().
|
inline |
在文件 DoublyConnectedEdgeList.h 第 193 行定义.
被这些函数引用 MapGen::GraphParser::GraphParser() , 以及 MapGen::randomize().
|
inline |
在文件 DoublyConnectedEdgeList.h 第 198 行定义.
在文件 DoublyConnectedEdgeList.h 第 272 行定义.
引用了 MapGen::DoublyConnectedEdgeList::Face::HalfEdge.
被这些函数引用 ConnectNodes(), MapGen::getRandomOpposingEdges() , 以及 MapGen::GraphParser::GraphParser().
|
inline |
在文件 DoublyConnectedEdgeList.h 第 183 行定义.
|
inline |
在文件 DoublyConnectedEdgeList.h 第 188 行定义.
在文件 DoublyConnectedEdgeList.h 第 260 行定义.
引用了 MapGen::DoublyConnectedEdgeList::Node::LeavingHalfEdge.
被这些函数引用 MapGen::fixGraphData().
|
inlinestatic |
在文件 DoublyConnectedEdgeList.h 第 286 行定义.
引用了 MapGen::DoublyConnectedEdgeList::HalfEdge::Next.
被这些函数引用 ConnectNodes(), MapGen::getRandomOpposingEdges() , 以及 MapGen::GraphParser::GraphParser().
|
inlinestatic |
在文件 DoublyConnectedEdgeList.h 第 303 行定义.
|
inline |
|
inline |
在文件 DoublyConnectedEdgeList.h 第 178 行定义.
在文件 DoublyConnectedEdgeList.h 第 236 行定义.
引用了 MapGen::DoublyConnectedEdgeList::HalfEdge::Pair.
被这些函数引用 FHalfEdgeCounter::Insert() , 以及 MapGen::RoadSegmentBuilder::insert().
在文件 DoublyConnectedEdgeList.h 第 212 行定义.
引用了 MapGen::DoublyConnectedEdgeList::HalfEdge::Source.
被这些函数引用 MapGen::RoadSegmentBuilder::Add(), GetAngle(), MapGen::getSourcePosition() , 以及 MapGen::GraphParser::GraphParser().
在文件 DoublyConnectedEdgeList.h 第 224 行定义.
引用了 MapGen::DoublyConnectedEdgeList::HalfEdge::Target.
被这些函数引用 GetAngle() , 以及 MapGen::getTargetPosition().
DoublyConnectedEdgeList::Node & MapGen::DoublyConnectedEdgeList::SplitEdge | ( | const Position & | Position, |
HalfEdge & | HalfEdge ) |
Split HalfEdge (and its pair) at Position.
The time complexity is O(n*log(n)) where n is the number of edges leaving HalfEdge's source.
在文件 DoublyConnectedEdgeList.cpp 第 148 行定义.
引用了 MapGen::DoublyConnectedEdgeList::HalfEdge::Face, MapGen::FindPositionInNode(), HalfEdges, MapGen::DoublyConnectedEdgeList::HalfEdge::Next, Nodes, MapGen::DoublyConnectedEdgeList::HalfEdge::Pair, MapGen::DoublyConnectedEdgeList::HalfEdge::Source , 以及 MapGen::DoublyConnectedEdgeList::HalfEdge::Target.
被这些函数引用 MapGen::splitFace().
|
private |
在文件 DoublyConnectedEdgeList.h 第 333 行定义.
被这些函数引用 ConnectNodes() , 以及 DoublyConnectedEdgeList().
|
private |
在文件 DoublyConnectedEdgeList.h 第 331 行定义.
被这些函数引用 AddNode(), ConnectNodes(), DoublyConnectedEdgeList() , 以及 SplitEdge().
|
private |
在文件 DoublyConnectedEdgeList.h 第 329 行定义.
被这些函数引用 AddNode(), DoublyConnectedEdgeList() , 以及 SplitEdge().