2012-06-20 71 views
0

我試圖開發應該somewhat like this計算相鄰的圓段

我使用RaphaelJS得出這樣那樣的作品就好了一個組件。我有一系列的角度,我用它來計算各個部分的路徑。我將這些路徑存儲在一個簡單的數組中,以便內部圓圈處於分段[0]等等向外旋轉。

我的問題是,我需要每個段都知道它的順時針,逆時針,向內和向外的相鄰段,我很難找出如何計算這些位置是我的段數組。舉例來說,在上圖的情況下,第2級的紅色部分(其中0是最內圈)具有紅色,亮綠色,亞洲柿樹,淺紫色和深紫色的鄰居。

也許我需要一個不同的座標系統。如果每個級別具有相同的段數和角度分佈,這將是一個簡單的例子,使用像索引圓形陣列的模數,但事實並非如此。

任何幫助將不勝感激。

非常感謝,

安東尼

+0

當一個分段與兩個外部或內部分段重疊時會發生什麼?或者更多? – TheZ

+0

從給定分段的角度來看,如果多個外部分段「重疊」分段,則它們都被認爲與該原始分段相鄰。內部細分相同。 –

+0

您必須遍歷相鄰的外部和內部線段,並檢查切片兩端的角度是否等於每個其他線段的端點,反之亦然。不是一個「快速」的過程,但可能是最簡單的過程。 – TheZ

回答

1

如何你從一個排序數組存儲所述段爲每級一個排序的數組我會改變。

查找給定段(S)的鄰居是非常容易的:左邊和右邊的鄰居是該層次數組的前一個和下一個元素。

在相鄰層次中的鄰居在這些數組中找到一對二進制搜索:找到與S的開始和結束角度重合的段,鄰居是這兩段之間的段的順序。