我正在構建一個應用程序,該應用程序使用Half-Edge structure來存儲二維三角形的網格。在CoreData中存儲半邊結構
每當用戶點擊屏幕並添加一個點時,就會計算網格。
我希望能夠將網格保存到CoreData中。不只是點,但整個網格,這樣就不必重新計算一次恢復時)
我半邊結構像這樣(圖紙是由一組三角形組成):
Triangle:
- firstHalfEdge (actually, any half-edge of the triangle)
HalfEdge:
- lastVertex (the Vertex in which the Edge ends)
- next (next halfedge in the triangle)
- oposite (the halfedge oposite to this one, which is in another triangle)
- triangle (the triangle which this edge belongs to)
Vertex:
- halfEdge (the edge which the vertex belongs to)
- point (2d coordinates of the vertex)
這是我CoreData方案:
正如你可以看到我添加了一個前面的屬性半邊(但也沒必要),以避免受到警告的非反比關係。
但我不斷收到更多的警告:
- Vertex.point應該有一個逆。 (這個沒有問題,我只是添加另一個屬性)
- Vertex.halfEdge應該有一個逆。 (這指的是這個頂點是第一個頂點的HalfEdge,所以lastVertex不會做倒數)
- HalfEdge.lastVertex應該有倒數。 (見上)
- HalfEdge.triangle應該有一個逆。 (Triangle.firstHalfEdge指的只是一個邊,任何,但所有3個邊都應該指向三角形)Triangle.firstHalfEdge應該有一個倒數。 (見上)
那麼,我該怎麼辦?我應該嘗試完成這些反向關係嗎?(儘管如此,我想這會讓我的結構計算更加複雜),還是應該忽略這些警告?
順便說一句,如果有人好奇,這是我在做什麼:http://www.youtube.com/watch?v=c2Eg7DXW7-A&feature=feedu
我知道有些事情要考慮。我認爲禁用警告就像關閉汽車裏閃爍的引擎燈。可能不是一個好主意。 – Odrakir
在任何情況下*有*情況時,沒有反向關係是最好的選擇。對於我的情況(我被同樣的警告所困擾)反向並沒有任何意義。可能是一個糟糕的設計,但我想不出一個更好的設計。 – zrxq