我正在阅读Guibas-Stolfi论文,该论文描述了一种可用于计算Delaunay三角剖分的四边形边数据结构。我正在使用Java来实现QuadEdge数据结构。
我正在遵循此网站 Quad Edge data Structure Java中提到的实现。
简而言之,四边形边结构包括两个操作,即:
1. makeEdge->返回子细分中存在的边e的四边形边。 2. splice(a,b)->用于更改与四边形边a和b相关联的拓扑的函数。
现在,四边形边数据结构由两个字段Data和Next指针组成。
下一个字段是通过以下公式计算的: e[r].Next = e(Rot^r)Onext。
为了了解Onext,我在这里附上Guibas-Stolfi论文中的一张图。
如果Onext(即具有与e相同起点的下一个逆时针边缘)是该边本身,为什么在采用对偶边缘时它是另一条边缘。
我正在遵循此网站 Quad Edge data Structure Java中提到的实现。
简而言之,四边形边结构包括两个操作,即:
1. makeEdge->返回子细分中存在的边e的四边形边。 2. splice(a,b)->用于更改与四边形边a和b相关联的拓扑的函数。
现在,四边形边数据结构由两个字段Data和Next指针组成。
下一个字段是通过以下公式计算的: e[r].Next = e(Rot^r)Onext。
为了了解Onext,我在这里附上Guibas-Stolfi论文中的一张图。
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相同起点的下一个逆时针边缘)是该边本身,为什么在采用对偶边缘时它是另一条边缘。