private int GetNewVertex(int i1, int i2) {
var t1 = new Tuple<int, int>(i1, i2);
var t2 = new Tuple<int, int>(i2, i1);
if (_newVertices.ContainsKey(t2)) {
return _newVertices[t2];
}
if (_newVertices.ContainsKey(t1)) {
return _newVertices[t1];
}
var newIndex = _vertices.Count;
_newVertices.Add(t1, newIndex);
_vertices.Add(new Vertex() { Position = (_vertices[i1].Position + _vertices[i2].Position) * 0.5f });
return newIndex;
}
}