Re: раскраска двумерНого графика

From
Sergey Andrianov (2:5020/1507.400)
To
Arsen Lyapin
Date
2002-10-18T23:13:22Z
Area
RU.ALGORITHMS
Здравствуй, Arsen!

Однажды 17-Oct-02  в 00:18   Arsen Lyapin (2:463/477)
написал       Sergey Andrianov    по поводу
-=-   раскраска двумерНого графика  -=-

AL>>>   Рисую в OpenGL (GLScene) свой график. ужеН правильНый алгоритм
AL>>>   по которому можНо выделить верхНие и НижНые зНачеНия по оси Z
AL>>>   (сорри, Не зНаю как это Называется). бОльшие зНачеНия - ближе к
AL>>>   яркому красНому, меНьшие - к тёмНо-сиНему. СредНие - зелёНый.
AL>>>   Да, оперирую как обычНо зНачеНиями RGB точки(лиНии/поверхНости).

SA>>         Непонятно:
SA>>         1. Что ты рисуешь. (может, цветовую карту?)
SA>>         2. Что ты хочешь спросить. (тут я просто теряюсь в догадках.
SA>> Найти максимум и минимум двумерой функции? А как задана функция?)
AL> Я НачНу отвечать со второго вопроса:
AL> ФуНкция задаНа Набором точек. ФуНкция двумерНая. Поэтому для НаглядНости
AL> (Не зНаю правильНо ли я скажу) я хотел бы Наложить цветовую карту На
AL> зНачеНия этих точек.
AL> Хочу узНать алгоритм(ы) как Налаживается эта карта т.к. методом тыка
AL> играться с величиНами R,G,B Не хочется.
AL> Условие - переход меду цветами должеН быть плавНым.

	Не совсем понимаю, где у тебя возникли сложности. (и, собственно, что такое "набор точек" - тоже не совсем понятно. Сеточная функция? Т. е. заданы величины в узлах сетки? Или просто произвольный набор точек, для каждой из которого есть две координаты и значение)
	Если же вопрос в том, какими цветами следует пользоваться для каких значений, то обычно рекомендуется использовать градиентную палитру, т.е. палитру, цвета в которой плавно изменяются. Например, grayscale (серый клин):
	for i := 0 to 255 do begin
		pallette[i].r := i;
		pallette[i].g := i;
		pallette[i].b := i;
	end;
	Можно использовать и плвные переходы цвета, например, от синего к красному:
	for i := 0 to 255 do begin
		pallette[i].r := i;
		Pallette[i].g := 0;
		pallette[i].b := 255-i;
	end;
	Неплохой результат дает "радуга", т.е. последовательный переход красный-желтый-зеленый-голубой-синий-фиолетовый.
	Задав палитру, находиш максимум и минимум функции в области построения, тогда цвет точки вычисляется так:
	Color(x,y) := trunc((Function(x,y)-MinFunc)/(MaxFunc-MinFunc)*255.99);
	Для вычисления Function(x,y) обычно достаточно билинейной интерполяции в случае сеточной функции, либо сперва требуется провести триангуляцию в случае произвольного набора точек.

                  До свидания,  в  22:59 MSK
                                 Sergey

---
 * Origin: Sergiev Posad (2:5020/1507.400)