我正在寻找半边数据结构上的多边斜角的示例实现或伪代码。单边斜角很容易 - 但是同时有多个边缘......我现在试了好几个小时都没有成功。我只是在拓扑变化中挣扎,正确地推动顶点看起来并不困难。 基本上,我正在寻找一种关于如何在半边数据结构上从左网格到右网格的算法:
有人能指出我的论文,书籍或多边斜角的示例实现吗?
答案 0 :(得分:2)
我们可以将操作分为两个概念步骤。首先,加倍红色边缘。其次,将事件中的顶点爆炸至少一个红色边缘。
第一步可以一次完成一个边缘。给定红色边e,创建另一个边e'。对于e的一半边缘,按顺时针顺序插入e'的一半边作为下一半边,同一头。对于e的另一半边缘,将e'的另一半边缘作为下一半边缘以逆时针顺序插入相同的头部。
第二步可以一次完成一个顶点。给定顶点v入射到至少一个红色边缘,用头v对半边进行分组,如下所示。打破每个相邻的一对红色半边之间的圆形列表(1),它们是从每对相邻的白色边缘之间的相同原始边缘(2)产生的(相邻意味着两个半边是顺时针/逆时针顺序的下一个/上一个) 。对于每个休息,创建一个新的边缘。将所有东西拼接在一起。 (这涉及在碎片和新边缘的末端进行操作。我认为在这个答案的详细程度上的详细描述将是无益的。)