delauney 三角化

欢迎关注更多精彩
关注我,学习常用算法与数据结构,一题多解,降维打击。

给定平面内三角网格进行最优delauney三角化

空圆性

如果一个三角网格中任意一对三角形满足空圆性,则该三角网格为delauney三角化网格。


对其中一个三角形作外接圆,如果圆没有第4个点,则满足空圆。否则不满足。如果一对三角形不满足空圆性,则只要调整中间的分隔边即可。
如上图,右边是不满足空圆性的,调整中间的边,变成左边的图就满足了。

可以证明,如果所有局部满足空圆性,则全局也满足空圆性。

空圆性判断

按照定义可以对三角形作外接圆进行判断,此种方法比较麻烦。

还有一种简便方法。

可 以 计 算 边 e 的 2 个 对 角 α 1 , α 2 , 如 果 α 1 + α 2 > π , 则 不 满 足 空 圆 性 。 可以计算边e的2个对角\alpha_1, \alpha_2, 如果\alpha_1+\alpha_2>\pi, 则不满足空圆性。 e2α1,α2,α1+α2>π,

顶点最优化

上述只能保证是一个delauney三角网格,但是网格的分布还不是很均匀。
想要得到均匀的网格,需要对顶点位置进行优化。优化公式如下。

算法实现

代码库:https://github.com/LightningBilly/ACMAlgorithms/tree/master/图形学算法/三角网格算法/MeshWork/src/hw12/

#include "../../PolyMesh/IOManager.h"
#include <string>
#include <cmath>
#include <unistd.h>

using namespace std;

using namespace acamcad;
using namespace polymesh;

PolyMesh* mesh12;

double get_TriFace_Area(MPolyFace* f)
{
   
   
    MHalfedge* he = f->halfEdge();
    MPoint3 v0 = he->fromVertex(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值