Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: несколько хорошо различимых цветов для диаграммы  (Прочитано 11565 раз)
0 Пользователей и 3 Гостей смотрят эту тему.
Falsehood
Молодой специалист

ru
Offline Offline
Пол: Женский
не может быть


« : 25-10-2006 11:08 » 

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

как выбирать цвета для показателей автоматически?

соответственно, если показателей мало, то цвета для них должны сгенерироваться разные. чем больше показателей, тем больше похожих цветов..
есть какая-нибудь формула для получения разных цветов?
Записан

Славная трава...
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 25-10-2006 12:32 » 

Разбивать палитру на количество показателей
и соответсвенно выбирать
КОЖЗГСФ
2 показателя - КФ
3 показателя  - КЗФ
4 -КЖГФ
5 - КОЖГФ или КЖЗГФ или ...
и тд
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
PooH
Глобальный модератор

ru
Offline Offline
Пол: Мужской
... и можно без хлеба!


« Ответ #2 : 25-10-2006 13:11 » 

можно как вариант использовать процедурку:
Код:
void HSVtoRGB( float *r, float *g, float *b, float h, float s, float v )
{
int i;
float f, p, q, t;
if( s == 0 ) {
// achromatic (grey)
*r = *g = *b = v;
return;
}
h /= 60; // sector 0 to 5
i = floor( h );
f = h - i; // factorial part of h
p = v * ( 1 - s );
q = v * ( 1 - s * f );
t = v * ( 1 - s * ( 1 - f ) );
switch( i ) {
case 0:
*r = v;
*g = t;
*b = p;
break;
case 1:
*r = q;
*g = v;
*b = p;
break;
case 2
*r = p;
*g = v;
*b = t;
break;
case 3:
*r = p;
*g = q;
*b = v;
break;
case 4:
*r = t;
*g = p;
*b = v;
break;
default: // case 5:
*r = v;
*g = p;
*b = q;
break;
}
}

менять H от 0 до 239 с шагом зависимым от колическтва показателей,
приняв s=240
а v=120

ЗЫ: не проверял, но думаю идея ясна.
Записан

Удачного всем кодинга! -=x[PooH]x=-
Falsehood
Молодой специалист

ru
Offline Offline
Пол: Женский
не может быть


« Ответ #3 : 26-10-2006 07:14 » 

Sla, не велено ограничивать количество показателей, выбираемых пользователем. получит много одинаковых цветов, сам поймет, что надо уменьшить аппетиты...
PooH, спасибо. почти то, что нужно..
Записан

Славная трава...
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #4 : 27-10-2006 06:09 » new

Falsehood, да я в общем-то и не ограничивался, на примере показал процесс разложения. PooH углубился сразу в реализацию.
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines