| compiler |
11.08.2007 15:58
Сообщение
#1
|
|
Человек ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 050 Пол: Мужской Реальное имя: Станислав Репутация: 3 |
Добрый день!
Собственно нужна функция на ФП которая получая RGB-параметры возвращала бы номер этого(или максимально близкого к этому цвету) в стандартной палитре. [ RGBToP(const r, g, b:word):word; ] Желательно БЕЗ использования асм. Поиск особых результатов не дал(кроме не к чему не ведущей темы 2003-года) заранее благодарен -------------------- Спасибо!
Удачи! |
![]() ![]() |
| Neznaika |
11.08.2007 17:15
Сообщение
#2
|
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 51 Пол: Мужской Репутация: 0 |
Оооо, я когда-то решал эту задачу. Её нужно было решать всем разработчикам игрушек
с палитровой графикой для подгонки например цветов текстур/спрайтов с оригинальной палитрой к цветовой палитре игры. Пусть элемент палитры описывается типом type TRGB = record Red, Green, Blue : Byte end; Палитра состоит из 256 элементов TRGB: type TRGBPalette = array[0..255] of TRGB; Можно рассуждать следующим образом. Есть цветовое пространство RGB. Нам нужен его первый октант, то есть та часть(тот куб), в котором координаты по осям R, G и B изменяются от 0 до 255(тип Byte для Red, Green и Blue в TRGB). Соответственно переменная типа TRGB будет с одной стороны задавать цвет, а с другой(то что нам и нужно) координаты в первом октанте RGB-пространства. Вся палитра будет соответственно задавать набор точек в RGB-пространстве. Остается решить задачу на нахождение минимального расстояния от заданной точки до точек из палитры(в цветовом пространстве RGB). Пусть функция вычисляющая расстояние между двумя точками A и B объявлена как function Distance( A, B : TRGB ) : Real; тогда найти минимальное расстояние (и нужный нам ближайший цвет) можно следующим образом:
Тогда цвет RGBPalette[Index] наиболее "похож" на цвет X. P.S. Игрушки я не разрабатывал. |
compiler RGB --> 256 11.08.2007 15:58
compiler Что-то я не совсем понял...
Итак разбиваем всю па... 11.08.2007 17:34
volvo Ты для каких режимов хочешь это делать? Если у теб... 11.08.2007 18:00
compiler Ты для каких режимов хочешь это делать? Если у теб... 11.08.2007 18:09
Neznaika
стандартная палитра - это наверно VGA-палитра. Т... 11.08.2007 18:34
volvo
Обычное использование: сначала создается палитра ... 11.08.2007 18:48
Neznaika По-моему самый простой(и наглядный) пример использ... 11.08.2007 19:45
Neznaika Ответ-велосипед. Функция, которая требовалась изна... 12.08.2007 13:00
Archon http://www.enlight.ru/demo/faq/smth.phtml?query=al... 12.08.2007 18:02![]() ![]() |
|
Текстовая версия | 15.11.2025 13:03 |