我正在阅读Guibas-Stolfi论文,该论文描述了一种可用于计算Delaunay三角剖分的四边数据结构。我正在使用java来实现QuadEdge数据结构。
我正在关注此网站Quad Edge data Structure Java上提到的实施。
简而言之,四边形结构包括2个操作,即
现在,Quad Edge数据结构由2个字段组成,即Data和Next指针。
使用公式计算下一个字段, e [r] .Next = e(Rot ^ r)Onext。
关于Onext的想法,我附上了Guibas-Stolfi论文中的一个人物
现在,示例代码为四边形的所有4个部分设置下一个指针。它们设置如下1,
q0 = new QuadEdge();
q1 = new QuadEdge();
q2 = new QuadEdge();
q3 = new QuadEdge();
q0.Onext = q0;
q1.Onext = q3; //on the sphere, left=right (How?? or Why??)
q2.Onext = q2;
q3.Onext = q1;
我的问题是,如果Onext即(下一个与e具有相同原点的逆时针边缘)是边缘本身,为什么在采用双边缘时它是另一边缘。
我可能把这个问题放在了错误的地方。我为此道歉并给它带来任何不便。
谢谢, 切塔尼亚
答案 0 :(得分:1)
看起来q1和q3都来自同一点(无穷远处的虚拟点)。这就是q1.oNext == q3
和q3.oNext == q1
。