Java 四边形数据结构makeEdge逻辑

Java 四边形数据结构makeEdge逻辑,java,data-structures,computational-geometry,Java,Data Structures,Computational Geometry,我正在阅读Guibas Stolfi的论文,该论文描述了一个四边形数据结构,可用于计算Delaunay三角剖分。我正在使用java实现QuadEdge数据结构 我一直在关注这个网站上提到的实现 简言之,四边形结构由两个操作组成,即 makeEdge->返回子分区中存在的边e的四边形边 拼接(a,b)->用于更改与四边形边a和b关联的拓扑的功能 现在,四边形数据结构由两个字段组成,即数据和下一个指针 下一个字段使用以下公式计算:, e[r].Next=e(Rot^r)Onext 为了了解Onext

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

我一直在关注这个网站上提到的实现

简言之,四边形结构由两个操作组成,即

  • makeEdge->返回子分区中存在的边e的四边形边
  • 拼接(a,b)->用于更改与四边形边a和b关联的拓扑的功能
  • 现在,四边形数据结构由两个字段组成,即数据和下一个指针

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

    为了了解Onext,我附上了Guibas Stolfi文件中的一个图

    现在,示例代码为四边形边的所有4个部分设置下一个指针。具体如下:


    我的问题是,如果一条下一条逆时针方向的边,即与e具有相同原点的下一条边,是边本身,那么当取双边时,为什么它是另一条边。

    看起来q1和q3的原点都在同一点(无穷远处的伪点)。这就是为什么
    q1.oNext==q3
    q3.oNext==q1

    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;