Наконец то реализовал алгоритм:
после каждой релаксации Ллойда строится новая триангуляция Делоне (функция delaunay из matlab).
Всё работает довольно быстро. На небольших сетках без проблем можно сделать несколько тысяч итераций.
После исследования работы с разными границами и разной плотностью узлов обнаружил, что такой алгоритм стремиться построить равномерную сетку в смысле формы и размеров треугольников, часто даже в ущерб её качеству по критерию минимального угла.
Сглаживание Лапласа, при тех же исходных данных, позволяет получить более качественную сетку по критерию минимального угла. Но при этом треугольники сильнее различаются по размерам. Сетка как бы местами "съёживается".
Так, что какой из этих методов лучше - однозначно сказать нельзя, всё зависит от приложения.
Кроме всего прочего, обнаружилась одна неприятность:
Хотя про метод Ллойда сказано, что он не запутывает сетку, я обнаружил такую вещь. Если число внутренних узлов велико и некоторые из них расположены близко от границы, то центры описанных окружностей некоторых треугольников выходят за пределы границы расчётной области. Эти треугольники с каждой новой релаксаций прижимаются к границе и в конце концов вырождаются. Если продолжить итерации, то число конечных элементов сетки уменьшается, внутренние узлы попадают на границу, а потом, часть внутренних узлов выходит за границу и весь процесс терпит неудачу.
slavav если Вам не сложно, подскажите пожалуйста, что я делаю не так? может нужно накладывать какие то ограничения на перемещение узлов вблизи границы?
вот пример исходной триангуляции
а вот, что с ней стало после 10 релаксаций Ллойда
Один узел вышел за пределы границы, некоторые приграничные треугольники совсем "сплющились"