#include <iostream>
#include <fstream>
#include <algorithm>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <map>
#include <vector>
#include <string>
#include <math.h>
#include <float.h>
类 | |
struct | Simplify::Ref |
表示三角形和顶点之间的引用的数据结构。 更多... | |
class | Simplify::SimplificationObject |
用于简化网格的类。 更多... | |
class | SymetricMatrix |
对称矩阵类 更多... | |
struct | Simplify::Triangle |
表示三角形的数据结构。 更多... | |
struct | vec3f |
一个包含三维浮点数坐标的向量结构体,提供了一系列向量运算。 更多... | |
struct | vector3 |
一个简单的三维向量结构体,包含x、y、z三个坐标。 更多... | |
struct | Simplify::Vertex |
表示顶点的数据结构。 更多... | |
命名空间 | |
namespace | Simplify |
命名空间,用于简化网格模型的工具和数据结构。 | |
宏定义 | |
#define | loopi(start_l, end_l) for (int i = start_l; i < end_l; ++i) |
标准输入输出流库 | |
#define | loopi(start_l, end_l) for (int i = start_l; i < end_l; ++i) |
标准输入输出流库 | |
#define | loopj(start_l, end_l) for (int j = start_l; j < end_l; ++j) |
定义一个循环宏,使用变量j从start_l迭代到end_l(不包括end_l)。 | |
#define | loopk(start_l, end_l) for (int k = start_l; k < end_l; ++k) |
定义一个循环宏,使用变量k从start_l迭代到end_l(不包括end_l)。 | |
枚举 | |
enum | Simplify::Attributes { Simplify::NONE , Simplify::NORMAL = 2 , Simplify::TEXCOORD = 4 , Simplify::COLOR = 8 } |
枚举类型,表示三角形的属性。 更多... | |
函数 | |
vec3f | barycentric (const vec3f &p, const vec3f &a, const vec3f &b, const vec3f &c) |
计算点p相对于三角形abc的重心坐标 | |
vec3f | interpolate (const vec3f &p, const vec3f &a, const vec3f &b, const vec3f &c, const vec3f attrs[3]) |
根据重心坐标插值属性 | |
double | min (double v1, double v2) |
返回两个数中的较小值 | |
#define loopi | ( | start_l, | |
end_l ) for (int i = start_l; i < end_l; ++i) |
标准输入输出流库
提供输入输出功能,用于在控制台打印信息或读取用户输入。
文件流库
提供文件读写功能,支持文本文件和二进制文件的操作。
算法库
提供各种常用算法的实现,如排序、查找等。
字符串操作函数库(C风格)
提供一系列用于处理C风格字符串的函数,如复制、比较等。
标准输入输出库(C风格)
提供基本的输入输出功能,如打印、读取等,通常用于控制台应用程序。
标准库头文件(C风格)
提供内存分配、程序控制、环境访问等功能。
关联数组(映射)库
提供了一种存储键值对的数据结构,可以快速地根据键查找对应的值。
动态数组库
提供了一种可以动态调整大小的数组数据结构,支持随机访问和高效的元素添加/删除。
字符串库(C++风格)
提供了一种表示和操作字符串的类,比C风格的字符串提供了更多的功能和安全性。
数学库
提供各种数学函数,如三角函数、对数函数、幂函数等。
浮点型数值限制库
定义了浮点型数值的一些极限值,如最小正数(FLT_EPSILON, DBL_EPSILON)等。
@def loopi @brief 定义一个循环宏,使用变量i从start_l迭代到end_l(不包括end_l)。 @param start_l 循环起始值(包含)。 @param end_l 循环结束值(不包含)。
定义一个循环宏,使用变量 i 从 start_l 迭代到 end_l(不包括 end_l)
在文件 Simplify.h 第 99 行定义.
被这些函数引用 Simplify::SimplificationObject::compact_mesh(), Simplify::SimplificationObject::load_obj(), Simplify::SimplificationObject::simplify_mesh(), Simplify::SimplificationObject::simplify_mesh_lossless(), SymetricMatrix::SymetricMatrix(), Simplify::SimplificationObject::update_mesh() , 以及 Simplify::SimplificationObject::write_obj().
#define loopi | ( | start_l, | |
end_l ) for (int i = start_l; i < end_l; ++i) |
标准输入输出流库
提供输入输出功能,用于在控制台打印信息或读取用户输入。
文件流库
提供文件读写功能,支持文本文件和二进制文件的操作。
算法库
提供各种常用算法的实现,如排序、查找等。
字符串操作函数库(C风格)
提供一系列用于处理C风格字符串的函数,如复制、比较等。
标准输入输出库(C风格)
提供基本的输入输出功能,如打印、读取等,通常用于控制台应用程序。
标准库头文件(C风格)
提供内存分配、程序控制、环境访问等功能。
关联数组(映射)库
提供了一种存储键值对的数据结构,可以快速地根据键查找对应的值。
动态数组库
提供了一种可以动态调整大小的数组数据结构,支持随机访问和高效的元素添加/删除。
字符串库(C++风格)
提供了一种表示和操作字符串的类,比C风格的字符串提供了更多的功能和安全性。
数学库
提供各种数学函数,如三角函数、对数函数、幂函数等。
浮点型数值限制库
定义了浮点型数值的一些极限值,如最小正数(FLT_EPSILON, DBL_EPSILON)等。
@def loopi @brief 定义一个循环宏,使用变量i从start_l迭代到end_l(不包括end_l)。 @param start_l 循环起始值(包含)。 @param end_l 循环结束值(不包含)。
定义一个循环宏,使用变量 i 从 start_l 迭代到 end_l(不包括 end_l)
在文件 Simplify.h 第 99 行定义.
#define loopj | ( | start_l, | |
end_l ) for (int j = start_l; j < end_l; ++j) |
定义一个循环宏,使用变量j从start_l迭代到end_l(不包括end_l)。
start_l | 循环起始值(包含)。 |
end_l | 循环结束值(不包含)。 |
在文件 Simplify.h 第 108 行定义.
被这些函数引用 Simplify::SimplificationObject::compact_mesh(), Simplify::SimplificationObject::load_obj(), Simplify::SimplificationObject::simplify_mesh(), Simplify::SimplificationObject::simplify_mesh_lossless() , 以及 Simplify::SimplificationObject::update_mesh().
#define loopk | ( | start_l, | |
end_l ) for (int k = start_l; k < end_l; ++k) |
定义一个循环宏,使用变量k从start_l迭代到end_l(不包括end_l)。
start_l | 循环起始值(包含)。 |
end_l | 循环结束值(不包含)。 |
在文件 Simplify.h 第 116 行定义.
被这些函数引用 Simplify::SimplificationObject::flipped(), Simplify::SimplificationObject::update_mesh(), Simplify::SimplificationObject::update_triangles() , 以及 Simplify::SimplificationObject::update_uvs().
计算点p相对于三角形abc的重心坐标
给定三角形abc和点p,计算点p的重心坐标(u, v, w)。 重心坐标满足u + v + w = 1,并且表示点p相对于三角形abc的位置。
p | 需要计算重心坐标的点 |
a | 三角形的第一个顶点 |
b | 三角形的第二个顶点 |
c | 三角形的第三个顶点 |
在文件 Simplify.h 第 546 行定义.
引用了 vec3f::dot().
被这些函数引用 interpolate().
vec3f interpolate | ( | const vec3f & | p, |
const vec3f & | a, | ||
const vec3f & | b, | ||
const vec3f & | c, | ||
const vec3f | attrs[3] ) |
根据重心坐标插值属性
给定三角形abc和点p的重心坐标,以及三角形abc三个顶点的属性attrs, 计算点p处的插值属性。
p | 需要计算插值属性的点 |
a | 三角形的第一个顶点 |
b | 三角形的第二个顶点 |
c | 三角形的第三个顶点 |
attrs | 包含三角形三个顶点属性的数组 |
在文件 Simplify.h 第 575 行定义.
引用了 barycentric(), vec3f::x, vec3f::y , 以及 vec3f::z.
被这些函数引用 Simplify::SimplificationObject::update_uvs().
double min | ( | double | v1, |
double | v2 ) |
返回两个数中的较小值
v1 | 第一个数 |
v2 | 第二个数 |
在文件 Simplify.h 第 591 行定义.
被这些函数引用 Simplify::SimplificationObject::calculate_error(), vec3f::clamp(), carla::geom::Math::Clamp(), MapGen::getRotation(), carla::nav::Navigation::GetWalkerTransform(), util::Random::Location(), MeshReconstruction::MarchCube(), util::Random::Uniform(), Simplify::SimplificationObject::update_mesh() , 以及 Simplify::SimplificationObject::update_triangles().