構造voronoi圖的數據結構

Typedef struct Node

{

  Int x;

  Int y;

}MyNode;

Typedef struct Nodel

{

  Int start;

  Int num;

  Edge *firstEdge;

}MyNodel;

Typedef struct Edge

{

Int mainNum;

Int adhereNum;

Double angle;

Struct Edge *pre;

Struct Edge *next;

Struct Edge *twin;

}edge;

Typedef struct MPIEDGE

{

 Int mainNum;

 Int adhereNum;

 Double angle;

}MyEdge;

 

1MyNode結構,節點數組保存的是平面上點集的橫座標和縱座標

2edge結構,邊節點,保存與序號爲mainNum的點相鄰的點信息:adhereNum爲此相鄰點的序號;angle爲序號mainNum的點到此相鄰點的向量到序號mainNum的點到序號爲start(在結構MyNodel)的點的向量的夾角的弧度(0<=,,,<=2*)prenext域分別爲雙向鏈表中的前一個和後一個邊節點;twin域爲與此節點對應的一個邊節點(即序號爲mainNum的點成爲序號爲adhereNum的一個相鄰點)

3MyNodel結構:start爲第一個與此點相鄰的點的序號;num爲當前與此點相鄰的點的個數;firstEdge域指向與此點相鄰的邊節點中angle最小的那個節點(序號爲start的那個相鄰邊節點的angle0)

4, MyEdge結構,只是提取了edge結構的前三個元素組成一個節點類型,主要是爲了滿足MPI函數在通信時(自定義通信元素的類型)確定邊的類型用的

 

如果只需實現串行的voronoi圖算法,則可以把MyNode和MyNodel結構合併,也用不到MyEdge結構了

發佈了50 篇原創文章 · 獲贊 1 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章