|
ViewDesignEngine
3.1.0
高性能 CAD 计算几何引擎
|
半边数据结构三角网格 更多...
#include <halfedge_mesh.h>
Public 成员函数 | |
| HalfedgeMesh ()=default | |
| void | clear () |
| 清空所有数据 更多... | |
| int | add_vertex (const Point3D &p) |
| 添加顶点 更多... | |
| int | add_face (const std::vector< int > &vertex_indices) |
| 添加面 更多... | |
| void | build_from_triangles (const std::vector< Point3D > &verts, const std::vector< std::array< int, 3 >> &tris) |
| 从三角形列表批量构建半边形网格 更多... | |
| size_t | num_vertices () const |
| 顶点数量 更多... | |
| size_t | num_faces () const |
| 面数量 更多... | |
| size_t | num_edges () const |
| 边数量 更多... | |
| const Point3D & | vertex (size_t idx) const |
| 访问顶点 更多... | |
| const Face & | face (size_t idx) const |
| 访问面 更多... | |
| const Halfedge & | halfedge (size_t idx) const |
| 访问半边 更多... | |
| void | set_vertex (size_t idx, const Point3D &p) |
| 更新顶点位置 更多... | |
| std::vector< int > | face_vertices (int fi) const |
| 获取面的所有顶点索引(按环绕顺序) 更多... | |
| std::vector< int > | vertex_faces (int vi) const |
| 获取顶点的邻面索引环 更多... | |
| bool | is_boundary_edge (int hei) const |
| 是否为边界半边 更多... | |
| bool | is_boundary_vertex (int vi) const |
| 是否为边界顶点 更多... | |
| Vector3D | face_normal (int fi) const |
| 面法向(几何法向,非归一化?由实现决定) 更多... | |
| Vector3D | vertex_normal (int vi) const |
| 顶点法向(邻面法向的面积加权平均) 更多... | |
| void | update_normals () |
| 重新计算所有面法向和顶点法向 更多... | |
| AABB3D | bounds () const |
| 网格包围盒 更多... | |
| FaceRange | faces_range () const |
| 获取所有面范围(range-based for 支持) 更多... | |
| VertexOneRing | vertex_one_ring (int vi) const |
| 获取顶点的 1-ring 邻域迭代器 更多... | |
半边数据结构三角网格
核心拓扑数据结构,支持 O(1) 访问面的邻面、顶点的邻面环、 边界检测等拓扑查询。数据内部一致性由构造方法保证。
数据成员:
在文件 halfedge_mesh.h 第 54 行定义.
|
default |
| int vde::mesh::HalfedgeMesh::add_face | ( | const std::vector< int > & | vertex_indices | ) |
添加面
| vertex_indices | 按逆时针顺序排列的顶点索引(至少 3 个) |
| int vde::mesh::HalfedgeMesh::add_vertex | ( | const Point3D & | p | ) |
添加顶点
| p | 3D 坐标 |
| AABB3D vde::mesh::HalfedgeMesh::bounds | ( | ) | const |
网格包围盒
| void vde::mesh::HalfedgeMesh::build_from_triangles | ( | const std::vector< Point3D > & | verts, |
| const std::vector< std::array< int, 3 >> & | tris | ||
| ) |
从三角形列表批量构建半边形网格
| verts | 顶点位置数组 |
| tris | 三角形索引数组,每个 {i0,i1,i2} |
| void vde::mesh::HalfedgeMesh::clear | ( | ) |
清空所有数据
|
inline |
| Vector3D vde::mesh::HalfedgeMesh::face_normal | ( | int | fi | ) | const |
面法向(几何法向,非归一化?由实现决定)
| fi | 面索引 |
| std::vector<int> vde::mesh::HalfedgeMesh::face_vertices | ( | int | fi | ) | const |
获取面的所有顶点索引(按环绕顺序)
| fi | 面索引 |
| FaceRange vde::mesh::HalfedgeMesh::faces_range | ( | ) | const |
获取所有面范围(range-based for 支持)
|
inline |
|
inline |
| bool vde::mesh::HalfedgeMesh::is_boundary_vertex | ( | int | vi | ) | const |
是否为边界顶点
| vi | 顶点索引 |
|
inline |
|
inline |
|
inline |
|
inline |
| void vde::mesh::HalfedgeMesh::update_normals | ( | ) |
重新计算所有面法向和顶点法向
|
inline |
| std::vector<int> vde::mesh::HalfedgeMesh::vertex_faces | ( | int | vi | ) | const |
获取顶点的邻面索引环
| vi | 顶点索引 |
| Vector3D vde::mesh::HalfedgeMesh::vertex_normal | ( | int | vi | ) | const |
顶点法向(邻面法向的面积加权平均)
| vi | 顶点索引 |
| VertexOneRing vde::mesh::HalfedgeMesh::vertex_one_ring | ( | int | vi | ) | const |
获取顶点的 1-ring 邻域迭代器
| vi | 顶点索引 |