Dandelion 1.1.1
A light-weight 3D builder for educational usage
|
半边网格中的面片。 更多...
#include <halfedge.h>
Public 成员函数 | |
Face (std::size_t face_id, bool is_boundary=false) | |
Eigen::Vector3f | area_weighted_normal () |
Eigen::Vector3f | normal () |
Eigen::Vector3f | center () const |
Public 属性 | |
const std::size_t | id |
Halfedge * | halfedge |
const bool | is_boundary |
边界面标识。 | |
Public 属性 继承自 LinkedListNode< Face > | |
Face * | next_node |
Face * | prev_node |
半边网格中的面片。
半边网格中,每个面片只维护属于自身的某一条半边。
Face::Face | ( | std::size_t | face_id, |
bool | is_boundary = false ) |
仅供 HalfedgeMesh::new_face
调用,其他任何情况下都不应该直接使用。
Vector3f Face::area_weighted_normal | ( | ) |
返回面片法向量与面片面积的数量积。
Vector3f Face::center | ( | ) | const |
返回面片中心(也是重心,顶点坐标的算数平均值)。
Vector3f Face::normal | ( | ) |
返回面片法向量(已经单位化)。
Halfedge* Face::halfedge |
属于这个面片的某一条半边。
const std::size_t Face::id |
面片的全局唯一 ID,不会与整个半边网格中任何其他元素重复。
const bool Face::is_boundary |
边界面标识。
如果不加处理地从一个不封闭 mesh 创建半边,位于 mesh 边界的边上将只会有一条半边, 从而让某些半边的反向指针 (inv
) 为空。为了让半边网格在形式上统一, 创建半边网格时会将每条边界视作一个“环路”,并为这个“环路”创建一个虚拟的面。