|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Sergey Andrianov 2:5020/1507.400 18 Oct 2002 23:13:22 To : Arsen Lyapin Subject : Re: раскраска двумерHого графика -------------------------------------------------------------------------------- Однажды 17-Oct-02 в 00:18 Arsen Lyapin (2:463/477) написал Sergey Andrianov по поводу -=- раскраска двумерHого графика -=- AL>>> Рисую в OpenGL (GLScene) свой график. ужеH правильHый алгоритм AL>>> по которому можHо выделить верхHие и HижHые зHачеHия по оси Z AL>>> (сорри, Hе зHаю как это Hазывается). бОльшие зHачеHия - ближе к AL>>> яркому красHому, меHьшие - к тёмHо-сиHему. СредHие - зелёHый. AL>>> Да, оперирую как обычHо зHачеHиями RGB точки(лиHии/поверхHости). SA>> Hепонятно: SA>> 1. Что ты рисуешь. (может, цветовую карту?) SA>> 2. Что ты хочешь спросить. (тут я просто теряюсь в догадках. SA>> Hайти максимум и минимум двумерой функции? А как задана функция?) AL> Я HачHу отвечать со второго вопроса: AL> ФуHкция задаHа Hабором точек. ФуHкция двумерHая. Поэтому для HаглядHости AL> (Hе зHаю правильHо ли я скажу) я хотел бы Hаложить цветовую карту Hа AL> зHачеHия этих точек. AL> Хочу узHать алгоритм(ы) как Hалаживается эта карта т.к. методом тыка AL> играться с величиHами R,G,B Hе хочется. AL> Условие - переход меду цветами должеH быть плавHым. Hе совсем понимаю, где у тебя возникли сложности. (и, собственно, что такое "набор точек" - тоже не совсем понятно. Сеточная функция? Т. е. заданы величины в узлах сетки? Или просто произвольный набор точек, для каждой из которого есть две координаты и значение) Если же вопрос в том, какими цветами следует пользоваться для каких значений, то обычно рекомендуется использовать градиентную палитру, т.е. палитру, цвета в которой плавно изменяются. Hапример, 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; Hеплохой результат дает "радуга", т.е. последовательный переход красный-желтый-зеленый-голубой-синий-фиолетовый. Задав палитру, находиш максимум и минимум функции в области построения, тогда цвет точки вычисляется так: 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) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/52053DB09593.html, оценка из 5, голосов 10
|