CARLA
 
载入中...
搜索中...
未找到
GraphTypes.h
浏览该文件的文档.
1// Copyright (c) 2017 Computer Vision Center (CVC) at the Universitat Autonoma
2// de Barcelona (UAB).
3//
4// This work is licensed under the terms of the MIT license.
5// For a copy, see <https://opensource.org/licenses/MIT>.
6
7#pragma once
8
9// 包含Carla/MapGen/CityMapDefinitions.h头文件,可能其中定义了与城市地图相关的一些常量、类型等内容
11// 包含Carla/Util/NonCopyable.h头文件,推测其中定义了不可复制相关的类或功能
13// 引入标准库中的vector容器,用于存放动态大小的同类型元素集合
14#include <vector>
15
16namespace MapGen {
17 // 如果定义了CARLA_ROAD_GENERATOR_EXTRA_LOG这个宏,以下结构体用于调试目的
18 #ifdef CARLA_ROAD_GENERATOR_EXTRA_LOG
19 /// 仅用于调试目的的模板结构体,用于给数据添加索引标识
20 /// 它继承自NonCopyable,意味着不能进行拷贝操作(通过私有继承实现)
21 template <char C>
22 struct DataIndex : private NonCopyable
23 {
24 // 构造函数,初始化时给当前对象的索引赋值为自增后的索引值
25 DataIndex() : index(++NEXT_INDEX) {}
26
27 // 静态函数,用于重置索引值,将其置为0
28 static void ResetIndex() {
29 NEXT_INDEX = 0u;
30 }
31
32 // 重载输出流运算符,用于方便地将该结构体对象输出到流中,格式为特定字符加上索引值
33 template <typename OSTREAM>
34 friend OSTREAM &operator<<(OSTREAM &os, const DataIndex &d) {
35 os << C << d.index;
36 return os;
37 }
38
39 // private:
40 // 用于记录当前对象的索引值,初始化为0
41 uint32 index = 0u;
42 // 静态成员变量,用于记录下一个可用的索引值,初始为0
43 static uint32 NEXT_INDEX;
44 };
45 // 根据是否定义了CARLA_ROAD_GENERATOR_EXTRA_LOG宏来定义不同的继承方式
46 #define INHERIT_GRAPH_TYPE_BASE_CLASS(c) : public DataIndex<c>
47 #else
48 #define INHERIT_GRAPH_TYPE_BASE_CLASS(c) : private NonCopyable
49 #endif // CARLA_ROAD_GENERATOR_EXTRA_LOG
50
51 // 定义表示图节点的结构体,继承方式由上面的宏决定(可能是继承DataIndex用于调试,或者直接继承NonCopyable)
53 {
54 // 记录节点的边的数量
55 uint32 EdgeCount;
56 // 初始假设每个节点都是交叉路口,后续可能会根据实际情况改变,用于标识节点是否为交叉路口
57 bool bIsIntersection = true;
58 // 交叉路口的类型,其类型应该在CityMapDefinitions.h中定义(推测)
59 EIntersectionType IntersectionType;
60 // 节点的旋转角度(可能是在地图中的角度相关信息)
61 float Rotation;
62 // 存储多个旋转相关的值的向量,具体用途需结合更多上下文确定
63 std::vector<float> Rots;
64 };
65
66 // 定义表示图的半边(Half Edge)的结构体,同样继承方式由宏决定
68 {
69 // 半边的角度信息,具体含义要看该图结构的应用场景
70 float Angle;
71 };
72
73 // 定义表示图的面(Face)的结构体,继承方式由宏决定
77
78 // 取消之前定义的宏,避免后续代码出现意外的影响
79 #undef INHERIT_GRAPH_TYPE_BASE_CLASS
80
81} // namespace MapGen
#define INHERIT_GRAPH_TYPE_BASE_CLASS(c)
Definition GraphTypes.h:48
std::ostream & operator<<(std::ostream &out, const ::carla::client::Timestamp &timestamp)
标准输出流操作
Definition Timestamp.h:75