У |
Серия 1 |
Серия 2 |
11,1 | ||
11,2 | ||
Пусто |
||
11,4 | ||
5,16 | ||
5,6 | 16,5 | |
4,7 | 19,2 | |
3,8 | 19,2 | |
7,2 | ||
7,2 | 19,2 | |
7,2 | ||
Пусто |
Такое представление пиксельной карты иногда называют ее представлением формы (shape representation) [Steinhart, 190; Atkinson, 6]. Иногда его еще называют «г/-сортированным списком х-сорти-рованных прямоугольников». Отметим, что посредством такого представления можно описать любую совокупность пикселов в пиксельной карте, в том числе набор из отдельных областей. Оно может описать даже группу изолированных пикселов, хотя это было бы и неэффективным.
Области, представленные в рамках этого метода, описываются наиболее компактно, если они обладают связностью интервала или связностью развертки, которые были описаны ранее. Области с высокой степенью связности требуют для своей характеристики меньшего количества данных в расчете на пиксел.
А что если пикселы могут принимать более чем два значения? Один из подходов состоит в том, чтобы выявить все одноцветные прямоугольники и сохранить их вместе с их значением цвета. (Как и прежде, фон не требуется сохранять в явном виде.)
При получении указателя на структуру данных область заполняется в процессе прохода по спискам, причем каждая серия закрашивается по мере ее вычисления. Обе эти подпрограммы рассматриваются в дальнейшем - в тематическом задании 10.4.
Масштабирование и перемещение областей Представление области в виде «формы» может также оказаться полезным в тех случаях, когда мы хотим манипулировать этими областями другими способами. Например, для того, чтобы сдвинуть область, представленную в виде «формы», простирающейся на 30 пикселов по х и на 55 пикселов по у, мы просто проходим по списку и увеличиваем все значения х на 30 единиц, а все значения у на 55 единиц. Для увеличения размера области в два раза мы вначале смещаем ее так, чтобы начальная серия находилась в начале координат (0,0), а затем удваиваем все значения в структуре данных. Наконец, перемещаем область в нужную позицию.