CARLA
 
载入中...
搜索中...
未找到
| Public 类型 | Public 成员函数 | Private 属性 | 所有成员列表
MapGen::DoublyConnectedEdgeList类 参考

Simple doubly-connected edge list structure. 更多...

#include <DoublyConnectedEdgeList.h>

+ 类 MapGen::DoublyConnectedEdgeList 继承关系图:
+ MapGen::DoublyConnectedEdgeList 的协作图:

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 ----------------------------------—
NodeAddNode (const Position &NodePosition, Node &OtherNode)
 {
 
NodeSplitEdge (const Position &Position, HalfEdge &HalfEdge)
 Split HalfEdge (and its pair) at Position.
 
FaceConnectNodes (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< NodeIteratorGetNodes ()
 
ListView< ConstNodeIteratorGetNodes () const
 
ListView< HalfEdgeIteratorGetHalfEdges ()
 
ListView< ConstHalfEdgeIteratorGetHalfEdges () const
 
ListView< FaceIteratorGetFaces ()
 
ListView< ConstFaceIteratorGetFaces () const
 

静态 Public 成员函数

Accessing graph pointers --------------------------------------—
static NodeGetSource (HalfEdge &halfEdge)
 
static const NodeGetSource (const HalfEdge &halfEdge)
 
static NodeGetTarget (HalfEdge &halfEdge)
 
static const NodeGetTarget (const HalfEdge &halfEdge)
 
static HalfEdgeGetPair (HalfEdge &halfEdge)
 
static const HalfEdgeGetPair (const HalfEdge &halfEdge)
 
static FaceGetFace (HalfEdge &halfEdge)
 
static const FaceGetFace (const HalfEdge &halfEdge)
 
static HalfEdgeGetLeavingHalfEdge (Node &node)
 
static const HalfEdgeGetLeavingHalfEdge (const Node &node)
 
static HalfEdgeGetHalfEdge (Face &face)
 
static const HalfEdgeGetHalfEdge (const Face &face)
 
static HalfEdgeGetNextInFace (HalfEdge &halfEdge)
 
static const HalfEdgeGetNextInFace (const HalfEdge &halfEdge)
 
static HalfEdgeGetNextInNode (HalfEdge &halfEdge)
 
static const HalfEdgeGetNextInNode (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.h20 行定义.

成员类型定义说明

◆ ConstFaceIterator

using MapGen::DoublyConnectedEdgeList::ConstFaceIterator = typename FaceContainer::const_iterator

在文件 DoublyConnectedEdgeList.h86 行定义.

◆ ConstHalfEdgeIterator

using MapGen::DoublyConnectedEdgeList::ConstHalfEdgeIterator = typename HalfEdgeContainer::const_iterator

在文件 DoublyConnectedEdgeList.h82 行定义.

◆ ConstNodeIterator

using MapGen::DoublyConnectedEdgeList::ConstNodeIterator = typename NodeContainer::const_iterator

在文件 DoublyConnectedEdgeList.h78 行定义.

◆ FaceContainer

在文件 DoublyConnectedEdgeList.h84 行定义.

◆ FaceIterator

using MapGen::DoublyConnectedEdgeList::FaceIterator = typename FaceContainer::iterator

在文件 DoublyConnectedEdgeList.h85 行定义.

◆ HalfEdgeContainer

在文件 DoublyConnectedEdgeList.h80 行定义.

◆ HalfEdgeIterator

using MapGen::DoublyConnectedEdgeList::HalfEdgeIterator = typename HalfEdgeContainer::iterator

在文件 DoublyConnectedEdgeList.h81 行定义.

◆ NodeContainer

在文件 DoublyConnectedEdgeList.h76 行定义.

◆ NodeIterator

using MapGen::DoublyConnectedEdgeList::NodeIterator = typename NodeContainer::iterator

在文件 DoublyConnectedEdgeList.h77 行定义.

◆ Position

在文件 DoublyConnectedEdgeList.h28 行定义.

构造及析构函数说明

◆ DoublyConnectedEdgeList() [1/2]

MapGen::DoublyConnectedEdgeList::DoublyConnectedEdgeList ( const Position & Position0,
const Position & Position1 )
explicit

Create a DoublyConnectedEdgeList with two nodes, two edges and one face.

在文件 DoublyConnectedEdgeList.cpp74 行定义.

引用了 Faces, HalfEdges , 以及 Nodes.

◆ DoublyConnectedEdgeList() [2/2]

template<size_t N>
MapGen::DoublyConnectedEdgeList::DoublyConnectedEdgeList ( const std::array< Position, N > & Cycle)
inlineexplicit

Create a DoublyConnectedEdgeList consisting of a cycle of N nodes.

在文件 DoublyConnectedEdgeList.h99 行定义.

◆ ~DoublyConnectedEdgeList()

MapGen::DoublyConnectedEdgeList::~DoublyConnectedEdgeList ( )

在文件 DoublyConnectedEdgeList.cpp102 行定义.

成员函数说明

◆ AddNode()

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.

返回
The newly generated node.

在文件 DoublyConnectedEdgeList.cpp113 行定义.

引用了 MapGen::DoublyConnectedEdgeList::HalfEdge::Face, MapGen::FindPositionInNode(), HalfEdges, MapGen::DoublyConnectedEdgeList::HalfEdge::Next, Nodes , 以及 MapGen::DoublyConnectedEdgeList::HalfEdge::Pair.

+ 函数调用图:

◆ ConnectNodes()

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.

返回
The newly generated face.

在文件 DoublyConnectedEdgeList.cpp194 行定义.

引用了 MapGen::DoublyConnectedEdgeList::HalfEdge::Face, Faces, MapGen::FindPositionInNode(), GetHalfEdge(), GetNextInFace(), MapGen::DoublyConnectedEdgeList::Face::HalfEdge, HalfEdges, MapGen::DoublyConnectedEdgeList::HalfEdge::Next , 以及 MapGen::DoublyConnectedEdgeList::HalfEdge::Pair.

被这些函数引用 MapGen::splitFace().

+ 函数调用图:
+ 这是这个函数的调用关系图:

◆ CountFaces()

size_t MapGen::DoublyConnectedEdgeList::CountFaces ( ) const
inline

在文件 DoublyConnectedEdgeList.h161 行定义.

被这些函数引用 MapGen::GraphParser::GraphParser() , 以及 MapGen::randomize().

+ 这是这个函数的调用关系图:

◆ CountHalfEdges()

size_t MapGen::DoublyConnectedEdgeList::CountHalfEdges ( ) const
inline

在文件 DoublyConnectedEdgeList.h156 行定义.

被这些函数引用 MapGen::GraphParser::GraphParser() , 以及 MapGen::randomize().

+ 这是这个函数的调用关系图:

◆ CountNodes()

size_t MapGen::DoublyConnectedEdgeList::CountNodes ( ) const
inline

在文件 DoublyConnectedEdgeList.h151 行定义.

被这些函数引用 MapGen::GraphParser::GraphParser() , 以及 MapGen::randomize().

+ 这是这个函数的调用关系图:

◆ GetAngle()

float MapGen::DoublyConnectedEdgeList::GetAngle ( const HalfEdge & halfEdge)
static

Return the angle [-pi, pi] of the half-edge.

在文件 DoublyConnectedEdgeList.cpp250 行定义.

引用了 MapGen::DoublyConnectedEdgeList::Node::GetPosition(), GetSource() , 以及 GetTarget().

被这些函数引用 MapGen::FindPositionInNode() , 以及 MapGen::fixGraphData().

+ 函数调用图:
+ 这是这个函数的调用关系图:

◆ GetFace() [1/2]

static const Face & MapGen::DoublyConnectedEdgeList::GetFace ( const HalfEdge & halfEdge)
inlinestatic

◆ GetFace() [2/2]

static Face & MapGen::DoublyConnectedEdgeList::GetFace ( HalfEdge & halfEdge)
inlinestatic

◆ GetFaces() [1/2]

ListView< FaceIterator > MapGen::DoublyConnectedEdgeList::GetFaces ( )
inline

在文件 DoublyConnectedEdgeList.h193 行定义.

被这些函数引用 MapGen::GraphParser::GraphParser() , 以及 MapGen::randomize().

+ 这是这个函数的调用关系图:

◆ GetFaces() [2/2]

ListView< ConstFaceIterator > MapGen::DoublyConnectedEdgeList::GetFaces ( ) const
inline

在文件 DoublyConnectedEdgeList.h198 行定义.

◆ GetHalfEdge() [1/2]

static const HalfEdge & MapGen::DoublyConnectedEdgeList::GetHalfEdge ( const Face & face)
inlinestatic

◆ GetHalfEdge() [2/2]

static HalfEdge & MapGen::DoublyConnectedEdgeList::GetHalfEdge ( Face & face)
inlinestatic

在文件 DoublyConnectedEdgeList.h272 行定义.

引用了 MapGen::DoublyConnectedEdgeList::Face::HalfEdge.

被这些函数引用 ConnectNodes(), MapGen::getRandomOpposingEdges() , 以及 MapGen::GraphParser::GraphParser().

+ 这是这个函数的调用关系图:

◆ GetHalfEdges() [1/2]

ListView< HalfEdgeIterator > MapGen::DoublyConnectedEdgeList::GetHalfEdges ( )
inline

在文件 DoublyConnectedEdgeList.h183 行定义.

◆ GetHalfEdges() [2/2]

ListView< ConstHalfEdgeIterator > MapGen::DoublyConnectedEdgeList::GetHalfEdges ( ) const
inline

在文件 DoublyConnectedEdgeList.h188 行定义.

◆ GetLeavingHalfEdge() [1/2]

static const HalfEdge & MapGen::DoublyConnectedEdgeList::GetLeavingHalfEdge ( const Node & node)
inlinestatic

◆ GetLeavingHalfEdge() [2/2]

static HalfEdge & MapGen::DoublyConnectedEdgeList::GetLeavingHalfEdge ( Node & node)
inlinestatic

在文件 DoublyConnectedEdgeList.h260 行定义.

引用了 MapGen::DoublyConnectedEdgeList::Node::LeavingHalfEdge.

被这些函数引用 MapGen::fixGraphData().

+ 这是这个函数的调用关系图:

◆ GetNextInFace() [1/2]

static const HalfEdge & MapGen::DoublyConnectedEdgeList::GetNextInFace ( const HalfEdge & halfEdge)
inlinestatic

◆ GetNextInFace() [2/2]

static HalfEdge & MapGen::DoublyConnectedEdgeList::GetNextInFace ( HalfEdge & halfEdge)
inlinestatic

在文件 DoublyConnectedEdgeList.h286 行定义.

引用了 MapGen::DoublyConnectedEdgeList::HalfEdge::Next.

被这些函数引用 ConnectNodes(), MapGen::getRandomOpposingEdges() , 以及 MapGen::GraphParser::GraphParser().

+ 这是这个函数的调用关系图:

◆ GetNextInNode() [1/2]

static const HalfEdge & MapGen::DoublyConnectedEdgeList::GetNextInNode ( const HalfEdge & halfEdge)
inlinestatic

在文件 DoublyConnectedEdgeList.h303 行定义.

◆ GetNextInNode() [2/2]

static HalfEdge & MapGen::DoublyConnectedEdgeList::GetNextInNode ( HalfEdge & halfEdge)
inlinestatic

在文件 DoublyConnectedEdgeList.h298 行定义.

被这些函数引用 MapGen::fixGraphData().

+ 这是这个函数的调用关系图:

◆ GetNodes() [1/2]

ListView< NodeIterator > MapGen::DoublyConnectedEdgeList::GetNodes ( )
inline

在文件 DoublyConnectedEdgeList.h173 行定义.

被这些函数引用 MapGen::fixGraphData().

+ 这是这个函数的调用关系图:

◆ GetNodes() [2/2]

ListView< ConstNodeIterator > MapGen::DoublyConnectedEdgeList::GetNodes ( ) const
inline

在文件 DoublyConnectedEdgeList.h178 行定义.

◆ GetPair() [1/2]

static const HalfEdge & MapGen::DoublyConnectedEdgeList::GetPair ( const HalfEdge & halfEdge)
inlinestatic

◆ GetPair() [2/2]

static HalfEdge & MapGen::DoublyConnectedEdgeList::GetPair ( HalfEdge & halfEdge)
inlinestatic

在文件 DoublyConnectedEdgeList.h236 行定义.

引用了 MapGen::DoublyConnectedEdgeList::HalfEdge::Pair.

被这些函数引用 FHalfEdgeCounter::Insert() , 以及 MapGen::RoadSegmentBuilder::insert().

+ 这是这个函数的调用关系图:

◆ GetSource() [1/2]

static const Node & MapGen::DoublyConnectedEdgeList::GetSource ( const HalfEdge & halfEdge)
inlinestatic

◆ GetSource() [2/2]

static Node & MapGen::DoublyConnectedEdgeList::GetSource ( HalfEdge & halfEdge)
inlinestatic

在文件 DoublyConnectedEdgeList.h212 行定义.

引用了 MapGen::DoublyConnectedEdgeList::HalfEdge::Source.

被这些函数引用 MapGen::RoadSegmentBuilder::Add(), GetAngle(), MapGen::getSourcePosition() , 以及 MapGen::GraphParser::GraphParser().

+ 这是这个函数的调用关系图:

◆ GetTarget() [1/2]

static const Node & MapGen::DoublyConnectedEdgeList::GetTarget ( const HalfEdge & halfEdge)
inlinestatic

◆ GetTarget() [2/2]

static Node & MapGen::DoublyConnectedEdgeList::GetTarget ( HalfEdge & halfEdge)
inlinestatic

在文件 DoublyConnectedEdgeList.h224 行定义.

引用了 MapGen::DoublyConnectedEdgeList::HalfEdge::Target.

被这些函数引用 GetAngle() , 以及 MapGen::getTargetPosition().

+ 这是这个函数的调用关系图:

◆ SplitEdge()

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.

返回
The newly generated node.

在文件 DoublyConnectedEdgeList.cpp148 行定义.

引用了 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().

+ 函数调用图:
+ 这是这个函数的调用关系图:

类成员变量说明

◆ Faces

FaceContainer MapGen::DoublyConnectedEdgeList::Faces
private

在文件 DoublyConnectedEdgeList.h333 行定义.

被这些函数引用 ConnectNodes() , 以及 DoublyConnectedEdgeList().

◆ HalfEdges

HalfEdgeContainer MapGen::DoublyConnectedEdgeList::HalfEdges
private

在文件 DoublyConnectedEdgeList.h331 行定义.

被这些函数引用 AddNode(), ConnectNodes(), DoublyConnectedEdgeList() , 以及 SplitEdge().

◆ Nodes

NodeContainer MapGen::DoublyConnectedEdgeList::Nodes
private

在文件 DoublyConnectedEdgeList.h329 行定义.

被这些函数引用 AddNode(), DoublyConnectedEdgeList() , 以及 SplitEdge().


该类的文档由以下文件生成: