Идентификация объектов векторной графики

  Во всех редакторах векторной графики важным моментом является обособление, или выделение тех элементов, с которыми мы будем работать.

  В программе CоrelDraw, например, для этого используется инструмент «Указатель» – выбор объекта перед его изменением. Выделение нескольких объектов сразу можно сделать, нажав клавишу Shift.
  Выделить группу объектов можно, обведя их в рамку, – выделяются объекты полностью попавшие в рамку (при нажатой клавише Alt выделяются объекты, даже частично попавшие в рамку).
  Затем в CоrelDraw можно взять другой инструмент и работать им на выделенных объектах. Двигая, например, их узловые точки.
  Идентификация узловых точек происходит по их положению, то есть, по их векторным координатам. Если узловых точек очень много, то эта процедура затягивается, потому и понадобилось предварительное выделение объектов для работы с ними.

  Итак, идентификация объектов понадобилась для упрощения и ускорения работы с ними. Одновременно отметим, что идентификация объекта по всей массе его узловых точек, далеко не самый удачный способ работы с ним. Тем не менее, для своих задач, в русле создания статичных изображений, CоrelDraw работает вполне успешно.

     ИДЕНТИФИКАЦИЯ ПО НАЧАЛЬНЫМ ТОЧКАМ

  Векторная графика программы DM_Paint нацелена на создание анимации. Динамические перемещения векторных фигур вместе и порознь требуют не столь тяжеловесных и архаичных методов идентификации фигур, которые приняты в CоrelDraw.
  В программе DM_Paint фигуры идентифицируются не по массе узловых точек, а по координатам начальной точки, которая есть у каждой фигуры.
  Указав на начальную точку, и тем самым, выбрав фигуру, можно передвигать и поворачивать фигуру, а войдя в её контур, передвигать его узловые точки, меняя очертания контура.
  Такая идеология требует для своей реализации не полного списка узловых точек, а только списка начальных точек. В этом списке на первой и второй позициях указываются X,Y координаты узловой точки, а в нулевой позиции – номер строки векторной графики, описывающей конкретную фигуру. И эта идеология оказалась весьма продуктивной - http://youtu.be/lWpFxt3VWe8

   ЦВЕТОВАЯ ИДЕНТИФИКАЦИЯ ВЕКТОРНЫХ ОБЪЕКТОВ

  В программе «Стереометрия для математиков» идентификация трёхмерных векторных фигур упрощена ещё более – координатный список в ней вообще отсутствует.
  Фигуры идентифицируются не по их координатам, а по цвету.
  Уникальный номер векторной фигуры определяется сразу - в момент клика по ней. Номер этот задаётся тремя младшими битами трёх компонент цвета.
  Если младшие биты равны нулю во всех трёх BGR компонентах, то такая точка считается пустой, независимо от её видимого цвета, и мы относим эту область чертежа к области фона, то есть, считаем её не занятой изображением векторной фигуры.
  И наоборот – получив уникальный номер векторной фигуры ( номер этот может иметь значение J от 1 до 511 ), мы обращаемся к списку ссылок
N = Mvv( J ), по которому сразу же определяем номер строки конкретной фигуры.

  Поскольку видимый цвет фигуры определяется старшими байтами цвета, то использование младших бит цвета для цифровой идентификации является вполне разумной идеей.

  В программе «Стереометрия для математиков» во время штриховки сечений используется 4-й бит красной компоненты цвета – он устанавливается в единицу на штриховых линиях. Тогда как 4-е биты синей и зелёной компонент не используются, эти биты всегда равны нулю. Поэтому, в принципе, имеется возможность увеличить количество уникальных номеров для векторных фигур с цветовой идентификацией в 4 раза и довести их число до 4044, если использовать для идентификации и эти два бита.
=======

  Итак, мы рассмотрели различные способы идентификации фигур векторной графики. Указали на их преимущества и недостатки. А также на то, что способы эти могут быть весьма различными.
  Обсуждение указанной проблемы мне представляется важным для проектирования векторных редакторов различного назначения.

__________
11.12.2021


Рецензии