四边数据结构makeEdge逻辑

时间:2012-03-07 02:40:59

标签: java data-structures computational-geometry

我正在阅读Guibas-Stolfi论文,该论文描述了一种可用于计算Delaunay三角剖分的四边数据结构。我正在使用java来实现QuadEdge数据结构。

我正在关注此网站Quad Edge data Structure Java上提到的实施。

简而言之,四边形结构包括2个操作,即

  1. makeEdge - >返回细分中存在的边e的四边形
  2. 拼接(a,b) - >用于更改与四边形a和b相关联的拓扑的函数。
  3. 现在,Quad Edge数据结构由2个字段组成,即Data和Next指针。

    使用公式计算下一个字段,    e [r] .Next = e(Rot ^ r)Onext。

    关于Onext的想法,我附上了Guibas-Stolfi论文中的一个人物

    Edge Functions

    现在,示例代码为四边形的所有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具有相同原点的逆时针边缘)是边缘本身,为什么在采用双边缘时它是另一边缘。

    我可能把这个问题放在了错误的地方。我为此道歉并给它带来任何不便。

    谢谢, 切塔尼亚

1 个答案:

答案 0 :(得分:1)

看起来q1和q3都来自同一点(无穷远处的虚拟点)。这就是q1.oNext == q3q3.oNext == q1

的原因