Распределение цветов

 

sxam

старожил

Распределение цветов

Господа программисты, кто может посоветовать удачный алгоритм?
Задача:
Есть Х высших слоёв.
"Под каждым" из них есть Yx низших слоёв.
Надо распределить цвет всем Yx слоям.
Условия распределения:
Нельзя чтобы у слоёв Z и W был одинаковый цвет если они "принадлежат" к разным высшим слоям.
Нежелательно чтобы у слоёв Z и W был одинаковый цвет даже если они "принадлежат" к одному высшему слою.
Можно "похожий".

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

Вроде всё.
Естественно, я понимаю что цвета конечны и если дать тысячу высших слоёв и тысячу низших под каждым из них, то многие будут выглядеть похоже.
Как мне видится, средние величины будут, как правило :
5-50 высших слоёв
Под каждым из них от 1 до 6 низших слоёв.

Моё решение это всякие игры наподобие таких:
Итерируем на высшие слои:
Умножаем текущий номер высшего слоя на первичное число .
L = (6329 * текущий номер высшего слоя) mod 8000
Находим Х (расстояние на "кубике" цветов по оси Х)
X = L mod 20
Находим Y (расстояние на "кубике" цветов по оси Y)
L2 = (L – X) / 20
Y = L2 mod 20
Находим Z (расстояние на "кубике" цветов по оси Z)
Z = (L2 - Y) /20

Переводим X,Y,Z в цвета RGB:
R0 = X * 11 + 46
G0 = Y * 11 + 46
B0 = Z * 11


Итерируем на низшие слои принадлежащие к данному высшему слою :
N - текущий низший слой
RN = R0 – ((N-1)*2)
GN = round (G0 – ((N-1)*2.5))
BN = B0 + ((N-1)*3)


Примерно так.
Сейчас я играюсь со разными константами (20,46 ,6329, 8000,2.5) и смотрю что получается. Но если у кого-то есть работающая вещь или хорошая идея, с радостью возьму :)
 
Это сообщение редактировалось 28.08.2008 в 13:43
US Сергей-4030 #28.08.2008 17:36  @sxam#28.08.2008 13:22
+
-
edit
 

Сергей-4030

исключающий третье
★☆
админ. бан
Честно говоря, я не понял ничего. Слои - в каком смысле "слои"? Т.е. некоторый массив точек [maxX][maxY] - это "слой"? А под ним может быть еще? И над ним может быть еще? Или "слой" это один объект (типа, точка), под ним могут быть еще и над ним могут быть еще?
 
IL sxam #28.08.2008 18:10  @Сергей-4030#28.08.2008 17:36
+
-
edit
 

sxam

старожил

Сергей-4030> Честно говоря, я не понял ничего. Слои - в каком смысле "слои"? Т.е. некоторый массив точек [maxX][maxY] - это "слой"? А под ним может быть еще? И над ним может быть еще? Или "слой" это один объект (типа, точка), под ним могут быть еще и над ним могут быть еще?

Я плохо объяснил.
Слои - это виртуальные объекты в дереве на карте, наподобие этого:


Это я так неудачно перевёл на русский map layers :)

Например:
Дома жителей США
Дома Кливленда
Дома Питсбурга
Дома жителей Израиля
Дома Тель-Авива
Дома Иерусалима

В данном случае "высший слои" это Дома жителей США, Дома жителей Израиля а под ними Дома Кливленда, Дома Тель-Авива и т.д.
 
US Сергей-4030 #29.08.2008 23:04
+
-
edit
 

Сергей-4030

исключающий третье
★☆
админ. бан
В смысле, коротко, будет так: надо, чтоб на карте разные регионы выглядели по-разному?
 
UA sas1975kr #30.08.2008 01:07
+
-
edit
 

sas1975kr

опытный

А зачем такая сложность, если я так понимаю цветов до полусотни. Ну и подбери ты их вручную...
Эх, жалко - королевство маловато , разгуляться негде! Ну ничего! Я поссорюсь с соседями! Это я умею. ©  
IL sxam #30.08.2008 09:29  @Сергей-4030#29.08.2008 23:04
+
-
edit
 

sxam

старожил

Сергей-4030> В смысле, коротко, будет так: надо, чтоб на карте разные регионы выглядели по-разному?

Любые map layers. Вполне может быть что обьекты принадлежащие к разным layers будут географически в одном месте. Для этого распределение цветов и нужно, чтобы отличить. Регионы - это просто пример.
 
+
-
edit
 

sxam

старожил

sas1975kr> А зачем такая сложность, если я так понимаю цветов до полусотни. Ну и подбери ты их вручную...

Хотелось бы чего-то более generic :)
И кроме того, бывают и end case scenarios.
 

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru