CARLA
 
载入中...
搜索中...
未找到
DataStructs.h
浏览该文件的文档.
1#pragma once
2// 引入标准库中的向量容器,用于存储动态大小的元素序列,在这里可能用于存储点坐标、三角形顶点索引等数据
3#include <vector>
4// 引入标准库中的数组容器,用于表示固定大小的数组,此处用于定义三角形(固定三个顶点索引)
5#include <array>
6// 引入标准库中的函数对象包装器,用于创建可调用对象,方便传递函数作为参数等操作
7#include <functional>
8
9namespace MeshReconstruction
10{
11 // 定义一个名为Vec3的结构体,用于表示三维空间中的向量(或点坐标)
12 struct Vec3
13 {
14 double x, y, z;
15
16 // 重载加法运算符,实现两个Vec3类型向量的相加操作
17 // 返回一个新的Vec3对象,其各分量分别是两个操作数对应分量相加的结果
18 Vec3 operator+(Vec3 const &o) const
19 {
20 return {x + o.x, y + o.y, z + o.z};
21 }
22
23 // 重载减法运算符,实现两个Vec3类型向量的相减操作
24 // 返回一个新的Vec3对象,其各分量分别是两个操作数对应分量相减的结果
25 Vec3 operator-(Vec3 const &o) const
26 {
27 return {x - o.x, y - o.y, z - o.z};
28 }
29
30 // 重载乘法运算符,实现向量与一个标量(double类型数字)的乘法操作
31 // 返回一个新的Vec3对象,其各分量分别是原向量对应分量与标量相乘的结果
32 Vec3 operator*(double c) const
33 {
34 return {c * x, c * y, c * z};
35 }
36
37 // 计算向量的模(长度),根据向量模的计算公式,返回sqrt(x * x + y * y + z * z)的值
38 double Norm() const
39 {
40 return sqrt(x * x + y * y + z * z);
41 }
42
43 // 对向量进行归一化(标准化)操作,先计算向量的模,然后将向量的每个分量除以模
44 // 返回一个与原向量方向相同但模为1的新向量
46 {
47 auto n = Norm();
48 return {x / n, y / n, z / n};
49 }
50 };
51
52 // 定义一个名为Rect3的结构体,用于表示三维空间中的矩形区域
53 struct Rect3
54 {
55 Vec3 min; // 矩形区域的最小坐标点(左下角点等,具体取决于应用场景)
56 Vec3 size; // 矩形区域的尺寸(长、宽、高,沿x、y、z方向的长度)
57 };
58
59 // 使用std::array定义Triangle类型,它表示一个三角形,通过存储三个整数索引来指定在顶点数组中的三个顶点
60 using Triangle = std::array<int, 3>;
61
62 // 定义一个名为Mesh的结构体,用于表示一个网格模型
63 struct Mesh
64 {
65 // 存储网格模型的顶点坐标信息,每个元素是一个Vec3类型的点坐标
66 std::vector<Vec3> vertices;
67 // 存储构成网格模型的三角形信息,每个元素是一个Triangle类型,表示一个三角形的三个顶点索引
68 std::vector<Triangle> triangles;
69 // 存储网格模型中每个顶点的法向量信息,每个元素是一个Vec3类型的向量,用于表示顶点的法向方向
70 std::vector<Vec3> vertexNormals;
71 };
72
73 // 定义Fun3s类型别名,它是一个函数类型,接受一个Vec3类型的常量引用作为参数,返回一个double类型的值
74 // 可用于表示在三维空间中某个基于点坐标计算得到的标量函数(比如场函数等)
75 using Fun3s = std::function<double(Vec3 const &)>;
76 // 定义Fun3v类型别名,它是一个函数类型,接受一个Vec3类型的常量引用作为参数,返回一个Vec3类型的向量
77 // 可用于表示在三维空间中基于点坐标进行某种向量运算得到的向量函数(比如力场、速度场等向量函数)
78 using Fun3v = std::function<Vec3(Vec3 const &)>;
79}
std::array< int, 3 > Triangle
Definition DataStructs.h:60
std::function< Vec3(Vec3 const &)> Fun3v
Definition DataStructs.h:78
std::function< double(Vec3 const &)> Fun3s
Definition DataStructs.h:75
std::vector< Vec3 > vertexNormals
Definition DataStructs.h:70
std::vector< Triangle > triangles
Definition DataStructs.h:68
std::vector< Vec3 > vertices
Definition DataStructs.h:66
Vec3 operator*(double c) const
Definition DataStructs.h:32
Vec3 operator-(Vec3 const &o) const
Definition DataStructs.h:25
Vec3 operator+(Vec3 const &o) const
Definition DataStructs.h:18