private static List<Vector2> CreateShape(List<Vector3> vertices, List<Line> lines, float epsilon)
{
List<Vector2> output = new List<Vector2>();
Vector3 vertex, initial;
initial = vertices[0];
vertex = initial;
int curr_line = -1;
while (true)
{
for (int i = 0; i < lines.Count; i++)
{
Vector3 a = vertices[lines[i].a];
Vector3 b = vertices[lines[i].b];
if (Same(vertex, a, epsilon))
{
if (curr_line == i)
continue;
curr_line = i;
vertex = vertices[lines[i].b];
output.Add(new Vector2(vertex.X, vertex.Y));
break;
}
if (Same(vertex, b, epsilon))
{
if (curr_line == i)
continue;
curr_line = i;
vertex = vertices[lines[i].a];
output.Add(new Vector2(vertex.X, vertex.Y));
break;
}
}
if (Same(vertex, initial, epsilon))
break;
if (output.Count > vertices.Count)
{
output.Clear();
return output;
}
}
return output;
}