Delaunay三角剖分

定义:

st 超级三角形(包含所有其他顶点三角形)
open 待确认的三角形集合
close已经确定的delaunay三角形集合
edge 边的集合

伪码:

找到超级三角形, 初始化open
st放入open
初始化 close = [];
初始化 edge = [];
each vertices:
	初始化 edge (清空 edge)
	each open:
		点在三角形外接圆外部 & 右侧
			将此三角形存入 close
			open 删除此三角形
			continue
		点在三角形外接圆外部
			continue
		//剩下则在内部
		当前三角形边存入 edge
		open delete 此三角形
	edge删除相同边(eg:边a === 边b, 那么a和b都要删除)
	用当前点与edge内剩下的所有边组成新三角形,加入open
合并 close & open => close
过滤close中顶点含有st顶点的三角形
end

注意:

因为用到数组较多,当把数组A头当形参时,临时函数中对该数组A的操作会影响A,eg:

var open = [1, 2, 3];
function asmn(a){
	a.splice(2, 1);
}
asmn(open); // open => [1, 2]

edge删除相同边,不是相同的留下一条,而是出现相同,两条都要删除,eg:

var edge = [1, 0, 2, 1, 2, 1, 1, 0, 3, 1]
remove(edge);
//edge => [3, 1]

超级三角形,运用相似三角形原理时,st尽量大一些

截图:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值