2013-09-09 2 views
0

Я пытаюсь сохранить триангуляцию в структуре Doubly Connected Edge List, и я застрял на одном шаге.Как отсортировать последовательность строк, разделяющих одну и ту же вершину в порядке по часовой стрелке

мой вопрос: Как я могу отсортировать список полуребер, которые имеют общий хвост по часовой стрелке?

Тем, кто не знаком с этой структурой данных: Как я могу отсортировать список строк, разделяющих одну вершину по часовой стрелке?

Спасибо!

ответ

0

Предполагая, что вы имеете в виду по часовой стрелке относительно вершины, которую вы действительно хотите отсортировать по касательным. Если у вас есть какой-то способ привязки точек в строке это будет выглядеть примерно так в Python, так как вы не указали конкретный язык:

vertices = [[(1,2),(3,4)]...] # Some vertices assuming (1,2) is common vertex 
sorting = lambda vector: math.atan(vector[1][1]/vector[1][0]) 
sorted_list = sorted(vertices, key=sorting) 

Там также обратный параметр, если вы хотите переключиться на счетчик по часовой стрелке.

+0

Не могли бы вы переписать это в C++? Я немного запутался в строке 2 (так как я не знаю Python). Спасибо! – user2605344

+0

@ user2605344 Вторая строка - просто арктангенс. –

+0

Извините, но я не понимаю, что вы имеете в виду. Какая арктангенс поможет мне? Предполагая, что у меня есть v1, v2 и v3, где v1 - общая вершина, следует ли делать atan (y3/y2) или atan (x3/x2) или что? Я не вижу, как это имеет значение математически. Спасибо. – user2605344