Сглаживание ломанной изолиний с помощью Безье
Часто требуется, чтобы получаемая линия была гладкой, причем обычно достаточно непрерывности ее наклона. Если по вершинам минимальной ломаной строить параметрические сплайны, то нельзя гарантировать, что линия будет целиком лежать в коридоре.
Предлагается заменять звенья ломаной минимальной длины кривыми Безье:
где – полиномы Бернштейна, а Рi – вершины характеристического многоугольника, причем обычно достаточно использовать кубические кривые Безье (n = 3).
Пусть Mk, Mk+1 – две соседние вершины минимальной ломаной. Тогда кривую Безье на k – ом отрезке определят четыре вершины многоугольника, причем P0 = Mk, P3 = Mk+1, а дополнительные точки P1 и P2 задают наклоны в Mk и Mk+1. Если на (k – 1) – ом участке кривую Безье определяют точки и Q0,Q1,Q2 и Q3, то, естественно, Q3 = P0 =Mk, а для обеспечения непрерывности наклона в Mk точки Q2, Mk и Р1, должны лежать на одной прямой. В силу того, что
сегмент кривой Безье целиком лежит в выпуклой оболочке точек. Поэтому дополнительные точки Р1, и Р2, на каждом участке минимальной ломаной нужно задавать так, чтобы обеспечивалось гладкое сшивание соседних кривых, а выпуклая оболочка точек Р0, Р1, Р2, Р3 целиком лежала внутри коридора.
Рис. 21. Сегменты кривой Безье внутри коридораНаклоны кривой Безье в каждой вершине минимальной ломаной можно вычислить, используя простые методы для локальных трехточечных кубических сплайнов. Затем на прямых, определяемых этими наклонами, необходимо так расположить точки Р1, и Р2, чтобы кривая целиком попадала в коридор. Если точки Mk и Mk+1 ломаной принадлежат одной границе коридора, то это соответствует выпуклому участку кривой, и достаточно найти гранению Р0Р1Р2Р3 (рис 21, a). Если Mk и Mk+1 лежат на разных границах коридора, то это соответствует участку перегиба, и требуется найти два треугольника Р0Р1Р3 и Р0Р2Р3 (рис. 21, б). В обоих случаях используются простые алгоритмы проверки взаимного положения точек и отрезков.
При построении сегмента кривой Безье используются три последовательных отрезка ломаной минимальной длины и соответствующие части границ коридора. Поэтому сглаживание можно проводить прямо в процессе расчета вершин ломаной.