在开放网格中计算三角形的面积
calculate the area of a triangle in openmesh
这是"多边形网格过程"示例中的片段:
for (v_it=mesh_.vertices_begin(); v_it!=v_end; ++v_it) {
area = 0.0;
for (vf_it=mesh_.vf_iter(v_it); vf_it; ++vf_it)
{
fv_it = mesh_.fv_iter(vf_it);
const Mesh::Point& P = mesh_.point(fv_it); ++fv_it;
const Mesh::Point& Q = mesh_.point(fv_it); ++fv_it;
const Mesh::Point& R = mesh_.point(fv_it);
area += ((Q-P)%(R-P)).norm() * 0.5f * 0.3333f; // norm: compute euclidean norm, return Scalar
}
weight(v_it) = (fabs(area)>FLT_MIN ? 1.0 / (2.0 * area) : 0.0);
}
为什么最后乘以 0.3333F?
您可能知道,((Q-P)%(R-P)).norm() * 0.5f
部分只是由 Q
、P
和 R
跨越的三角形的面积。
在此示例中,似乎计算了一个与假定"属于"每个顶点的表面面积成比例的顶点权重。假设任何入射三角形的三分之一面积都有助于此特定顶点。(另外三分之二被认为属于入射到相应三角形的其他两个顶点。因此,您的系数(大约(为1/3。
相关文章:
- 为什么"do while"循环不断退出,即使条件计算结果为 false?
- 递归函数计算序列中的平方和(并输出过程)
- (C++)分析树以计算返回错误值的简单算术表达式
- 我的字符计数代码计算错误.为什么
- 在计算中使用二的幂有多有利可图
- 如何计算文件中的"columns"数?
- 计算排序向量的向量中唯一值的计数
- 如何使用 std::累积在 C++ 中计算总和立方体
- 如何计算具有三角形面的网格的质心?
- 使用指针计算三角形各点之间的距离
- 在开放网格中计算三角形的面积
- 计算三角形与四边形的TBN矩阵的差异?
- 计算从德劳内三角测量获得的三角形的边长
- 如何累积三维三角形网格的边?用c语言计算网格边的算法
- 在GLSL中计算点后绘制三角形
- 为什么我在计算帕斯卡三角形元素时在递归 C 程序中出现堆栈溢出错误
- 结构化数据:嵌套三角形(使用结构并进行一些几何计算)
- C Plus Plus:计算矩形和三角形的面积
- 融合一个三角形循环并行化,计算子指标
- 计算三角形网格中的法线