Многие графические объекты, такие как поверхности, фрагменты и изображения, поддерживают два различных метода задания цвета: цветовые карты (которые используют индексированный цвет) и трюкколор. Каждый метод включает в себя различный рабочий процесс и оказывает различное влияние на визуальную презентацию.
Карта цветов - это массив m-на-3, в котором каждая строка задает триплет RGB. Для использования карты цветов в графическом представлении каждому местоположению на графике назначается индекс. Каждый индекс обращается к строке в карте цветов для отображения цвета в указанном месте на графике. Напротив, использование truecolor включает в себя указание триплета RGB в каждом месте на графике.
Вот несколько моментов, которые следует учитывать при принятии решения о том, какой метод использовать:
Truecolor более прямой. Если требуется присвоить определенные значения красного, зеленого и синего цветов определенным местоположениям на графике, обычно это проще сделать с помощью цвета.
Внесение изменений в область цветовой палитры проще сделать в карте цветов. Например, если нужно скрасить переход от синего к зеленому в градиенте, проще редактировать эти строки в карте цветов, чем редактировать цвета в отдельных местах на графике.
Формат данных может быть более подходящим для одного из рабочих процессов. Например, многие сжатые GIF-изображения хранятся с использованием индексированного цвета.
Оба метода раскраски используют цветовой массив C для указания информации о цвете. Форма C зависит от типа графического объекта и выбранного метода раскраски. В этой таблице обобщаются различия.
| Тип графического объекта | Свойство, содержащее массив цветов C | Форма C для индексированного цвета | Форма C для Truecolor |
|---|---|---|---|
Surface | CData | C - массив m-by-n, размер которого совпадает с размером массива z-координат. Значение при C(i,j) задает индекс карты цветов для Z(i,j). | C является массивом m-by-n-by-3, где C(:,:,i) того же размера, что и массив координат Z.C(i,j,1) задает красный компонент для Z(i,j).C(i,j,2) задает зеленый компонент для Z(i,j).C(i,j,3) задает синий компонент для Z(i,j). |
Image | CData | C является массивом m-by-n для образа m-by-n. Значение при C(i,j) задает индекс карты цветов для пиксела (i,j). | C является массивом m-by-n-by-3 для образа m-by-n.C(i,j,1) задает красный компонент для пиксела (i,j).C(i,j,2) задает зеленый компонент для пиксела (i,j).C(i,j,3) задает синий компонент для пиксела (i,j). |
Patch (x, y, z) | CData | Чтобы раскрасить грани сегмента, C является массивом 1 на m для m граней сегментов. C(i) задает индекс карты цветов для грани i.Чтобы раскрасить вершины сегментов, C - массив m-by-n, где m - число вершин на грань, а n - число граней. C(i,j) задает индекс карты цветов для вершины i лица j. | Чтобы раскрасить грани сегмента, C является массивом m-на-3 для m граней сегментов. C(i,:) задает значения красного, зеленого и синего цвета для грани i.Чтобы раскрасить вершины сегментов, C является массивом n-by-3, где n - общее число вершин. C(i,:) задает значения красного, зеленого и синего цвета для вершины i. |
Patch (данные грани-вершины) | FaceVertexCData | Чтобы раскрасить грани сегмента, C является массивом 1 на m для m граней сегментов. C(i) задает индекс карты цветов для грани i.Чтобы раскрасить вершины сегментов, C - массив 1 на n, где n - общее число вершин. C(i) задает индекс карты цветов для вершины i. | Чтобы раскрасить грани сегмента, C является массивом m-на-3 для m граней сегментов. C(i,:) задает значения красного, зеленого и синего цвета для грани i.Чтобы раскрасить вершины сегментов, C является массивом n-by-3, где n - общее число вершин. C(i,:) задает значения красного, зеленого и синего цвета для вершины i. |
Карты цветов предлагают палитру из m цветов, где m - длина карты цветов. Напротив, трюкколор предлагает палитру 256 × 256 × 256 ≈ 1,68 млн цветов.
При выборе размера цветовой палитры необходимо учитывать следующие факторы:
Более мелкие палитры цветов являются наиболее экономичным способом заливки больших областей сплошным цветом. Они также полезны при визуализации контуров поверхностей.
Более крупные палитры цветов лучше подходят для отображения тонких переходов и плавных градиентов цвета.
Интерполяция вершинных цветов по грани сегмента - это одна ситуация, в которой различия между индексированным цветом и трюкколором более заметны. Следующие два исправления иллюстрируют крайний случай. Патч слева использует небольшую цветовую карту, в то время как патч справа использует триеколор.

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