Dandelion 1.1.1
A light-weight 3D builder for educational usage
|
半边网格中最关键的几何元素。 更多...
#include <halfedge.h>
Public 成员函数 | |
Halfedge (std::size_t halfedge_id) | |
void | set_neighbors (Halfedge *next, Halfedge *prev, Halfedge *inv, Vertex *from, Edge *edge, Face *face) |
bool | is_boundary () const |
这条半边是否属于一个虚拟的边界面。 | |
Public 属性 | |
const std::size_t | id |
Halfedge * | next |
Halfedge * | prev |
Halfedge * | inv |
Vertex * | from |
Edge * | edge |
Face * | face |
Public 属性 继承自 LinkedListNode< Halfedge > | |
Halfedge * | next_node |
Halfedge * | prev_node |
半边网格中最关键的几何元素。
半边网格中,所有几何元素都通过半边相互连接。Halfedge 类维护了每条半边的起点、所属的边和面片、 在整个半边网格上的下一条(前一条、反向)半边,从而将所有的几何基本元素联系在一起。
Halfedge::Halfedge | ( | std::size_t | halfedge_id | ) |
仅供 HalfedgeMesh::new_halfedge
调用,其他任何情况下都不应该直接使用。
bool Halfedge::is_boundary | ( | ) | const |
这条半边是否属于一个虚拟的边界面。
这个函数的返回值是 face->on_boundary
,因此返回真时表示这条半边属于一个 “虚假的”面(表示边界而不是真正的面片);而返回假时这条半边也有可能与 mesh 边界相邻,所以函数名为 is_boundary
而不是 on_boundary
。
void Halfedge::set_neighbors | ( | Halfedge * | next, |
Halfedge * | prev, | ||
Halfedge * | inv, | ||
Vertex * | from, | ||
Edge * | edge, | ||
Face * | face ) |
一次性设置半边的所有属性,各参数含义与同名属性一致。
Edge* Halfedge::edge |
半边所在的边。
Face* Halfedge::face |
半边所在的面片。
Vertex* Halfedge::from |
半边的起点(发出点)。
const std::size_t Halfedge::id |
半边的全局唯一 ID,不会与整个半边网格中任何其他元素重复。
Halfedge* Halfedge::inv |
反方向的半边。
Halfedge* Halfedge::next |
下一条半边。
Halfedge* Halfedge::prev |
上一条半边。