Многоугольники и Ломаная линия в векторной графике

   Векторные элементы Многоугольник и Ломаная наиболее просто представляются в численном виде - вслед за титульной строкой идут, находимые по ссылке дополнительные строки, в которых нет ничего кроме X,Y координат точек, составляющих контур фигуры.
  Координаты эти упакованы по пять пар в каждой строке, и таким образом, общая запись формы контура оказывается очень компактной.
  Стороны многоугольника рисуются отельными движениями стилуса от одной его вершины к другой, причём, в момент отрыва стилуса от планшета, нарисованная сторона «прилипает» к предыдущей вершине, обеспечивая тем самым неразрывность контура.
  Ломаная линия рисуется по-другому – неотрывно, вольным движением стилуса по планшету, и ничего, что точек (вершин) при этом получается очень много - упакованные в строки, они займут не так уж много места. И это, так сказать, достоинства тех фигур, точки которых соединяются прямыми отрезками.
 
  Недостатком использования этих фигур может показаться некая их угловатость. Часто хочется видеть сглаженные контуры, с плавной линией обводки на месте углов.
  Как оказывается,  достичь этого легко.
  Идея тут простая – превращая отрезки контура в кривые Безье, не будем добавлять точки кривых Безье к точкам нашей записи явно. Расположим начальную и конечную точки кривой на серединах смежных отрезков, а обе оттягивающие точки Безье поместим в точку соприкосновения отрезков – в вершину многоугольника.
  И, о чудо, ровно ничего не изменяя в нашей компактной записи, мы получим фигуру с плавной обводкой (см. иллюстрацию).
 
  Такое удобство особенно ощущается для многоугольников с небольшим количеством вершин. Для Ломаных линий с частым расположением точек, скругление контура будет незаметно, и поэтому оно не производится.
  Для Многоугольника, его заливка делается указанием на начальную точку заливки – кликом стилуса мы указываем на расположение этой точки внутри контура фигуры и затем нажимаем клавишу «G». Нажатие клавиши «g» на нижнем регистре делает многоугольник скруглённым, повторное нажатие «g» на нижнем регистре – снимает скругление.
  Ломаная линия преобразуется в нескруглённый Многоуголник и обратно нажатиями на клавишу «h» нижнего регистра. А вот нажатие «h» создаст фигуру Безье, совпадающую по очертаниям с многоугольником, и при этом многоугольник не будет удалён, а останется в наборе фигур, составляющих графический рисунок.

  Клавиша «End», нажатая на верхнем регистре, прорежает контур, уменьшая количество точек на нём вдвое.
  На иллюстрации вверху слева показана спираль, нарисованная в процессе создания Ломаной линии. Поскольку массив для запоминания точек Ломаной ограничен числом 1000, то она получилась в усечённом виде – в изображении спирали не хватает последнего витка.
  Жёлтая линия на изображении соединяет начальную и конечную точки контура, она чертится только когда делается заливка, ограничивая её распространение вокруг незамкнутого контура. Цвет этой линии совпадает с цветом заливки.
  Для многоугольника, линия соединяющая его крайние точки, чертится всегда, и она имеет тот же цвет, который имеет контур.

  Ломаная, изображающая спираль, после пятикратного прорежения точек до количества N=64 стала демонстрировать угловатость, которая в форме сглаженного контура многоугольника менее заметна.
  Ещё эффективнее сглаживание при N=32, хотя о точности воспроизведения контура спирали в этом случае говорить не приходится.
  Тут многое зависит от сложности контура - круг, составленный как многоугольник из 16-ти точек, в сглаженном виде выглядит прекрасно. Правильные шестиугольник, 11-ти угольник и 16-ти угольник могут быть созданы не так, как описано выше, а как три опции рисования круга, и это бывает удобным.

  Почему именно такие цифры, вы спросите?
  Загадочного в них ничего нет. Просто координаты пяти вершин шестиугольника помещаются в одной дополнительной строке, а нулевая, начальная вершина, указана в титульной строке. Вот цифра 6 и получается.
  11-ти угольник занимает своими точками аккурат 3 строки, а 16-ти угольник – 4. Получается компактно и эффективно.

  Любую точку многоугольника или ломаной можно выделить, передвигаясь от одной точки к другой с помощью клавиш < и >. А затем перемещать эти точки, с помощью клавишей со стрелочками в правой части клавиатуры. Клавиша пробел уберёт промежуточные линии и покажет результат.
  Если нажимать клавиши со стрелками, используя верхний регистр, то точки будут перемещаться коллективно - вместе с выбранной точкой будут перемещаться и её соседи, и это ускорит работу по изменению формы контура. Количество перемещаемых одновременно точек может быть увеличено, если использовать сине-лиловые опции кнопки «с», находящейся на левой панели.
  Клавиша «end», нажатая на нижнем регистре, сгладит контур Многоугольника или Ломаной вблизи выбранной точки. Сила сглаживания регулируется цифрой на кнопке обозначенной буквой w, находящейся на верхней панели. Ширина зоны сглаживания регулируется точно так же, как и ширина коллективного сдвига точек.
 
  Только для ломаной и многоугольника в контур можно вставлять дополнительные точки или выборочно удалять точки из контура. Делается это нажатием клавиши «Ъ» на верхнем регистре или без него.
  Все эти, казалось бы мелкие возможности и удобства, делают фигуры Многоугольника и Ломаной линии очень привлекательными для целей векторной графики.
  Ещё большее удобство предоставляет «зелёная» опция перемещения - перемещение точек делается простым движением стилуса - http://youtu.be/LOCxg-Qvrdw

_________
8.12.2020


Рецензии