Я создаю приложение, в котором используется структура Half-Edge для хранения сетки двухмерных треугольников.
Сетка рассчитывается каждый раз, когда пользователь касается экрана и добавляет точку.
Я хочу иметь возможность сохранить сетку в CoreData. Не только точки, но и вся сетка, поэтому при восстановлении ее не нужно будет снова пересчитывать)
Моя структура HalfEdge выглядит следующим образом (рисунок состоит из набора треугольников):
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:
![enter image description here](https://i.stack.imgur.com/bpJSz.png)
Как вы можете видеть, я добавил предыдущий атрибут в HalfEdge (хотя он и не нужен), чтобы избежать получения предупреждения для не обратных отношений.
Но я продолжаю получать больше предупреждений:
- 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