Расчет длины ребер треугольников, полученных из триангуляции Делоне - PullRequest
0 голосов
/ 14 января 2019

У меня есть набор дискретных точек и, используя их, я провел триангуляцию Делоне.

Я хочу вычислить все длины ребер от вершины до соседних вершин.

Как я могу сделать / кодировать это на C ++?

1 Ответ

0 голосов
/ 14 января 2019

Я не проверял код, который вы разместили, но проблема кажется тривиальной.

  1. В вашей функции main после того, как вы нарисовали все треугольники / точки, получите список всех треугольников из subdiv с:

    vector<Vec6f> triangleList; 
    subdiv.getTriangleList(triangleList);
    

    (как в функции draw_delaunay(...))

  2. Теперь вы просто перебираете треугольники и сравниваете каждую точку каждого треугольника с вашей вершиной.

  3. Если это та же точка, что и у вас, то вы рассчитываете длину ребер с двумя другими точками треугольника. Длина здесь = L2 норма вектора v = point - your_vertex = Sqrt(v.x^2 + v.y^2).

Там могут быть дубликаты некоторых ребер, поэтому, если вы хотите избежать этого, просто создайте набор и добавьте туда все точки и вычислите нормы позже.

...