Функция разложения цвета на оттенки. - страница 21

 
Реter Konow:

Мой алгоритм работает хорошо. Быстро (15-20 микросекунд). Твой работает неверно. Ты предлагаешь мне переделывать свой алгоритм по примеру твоего?))


Все, Петр, утомил ты меня своей непробиваемостью.

Больше не могу.

Победил.  Твой алгоритм просто идеален!

 
Nikolai Semko:


Все, Петр, утомил ты меня своей непробиваемостью.

Больше не могу.

Победил.  Твой алгоритм просто идеален!

Мой не идеален. Он просто более верный.

Мораль сей басни такова: ни синтаксис, ни язык, ни стиль, ни соблюдения стандартов не рулят! Рулит разработчик.

 
Реter Konow:

Мой не идеален. Он просто более верный.

Хорошо твой отрезок в  rgb пространстве более прямой, чем мой.
 
Nikolai Semko:
Хорошо твой отрезок в  rgb пространстве более прямой, чем мой.

Ладно. Тема была интересной и полезной. 

 
Народ безмолствовал... 
 
Алексей Тарабанов:
Народ безмолствовал... 
Еще бы. Дураков не нашлось, кроме меня.
 
Nikolai Semko:
Еще бы. Дураков не нашлось, кроме меня.

Да ладно... Полезная функция родилась:

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Функция разложения цвета на оттенки.

Nikolai Semko, 2018.10.15 22:21

...

Вот единственная нужная и более универсальная функция для работы с градиентом:

union rgb {uint clr; uchar c[4];};
void Gradient(uint clr1,uint clr2,uint &arr[],uint size)
  {
   if(size==0) return;
   ArrayResize(arr,size);
   arr[0]=clr1; 
   rgb c1,c2;
   c1.clr=clr1;
   c2.clr=clr2;
   double R1=c1.c[2],G1=c1.c[1],B1=c1.c[0];
   double R2=c2.c[2],G2=c2.c[1],B2=c2.c[0];
   double deltaR=(R2-R1)/(size-1);
   double deltaG=(G2-G1)/(size-1);
   double deltaB=(B2-B1)/(size-1);
   R1 += 0.4999;
   G1 += 0.4999;
   B1 += 0.4999;
   for(uint i=1;i<size;i++)
     {
      R1+=deltaR; c1.c[2]=uchar (R1);
      G1+=deltaG; c1.c[1]=uchar (G1);
      B1+=deltaB; c1.c[0]=uchar (B1);
      arr[i]=c1.clr;
     }
  }

т.к. она генерирует все приведенные здесь алгоритмы в две строчки. Она самая быстрая, т.к. в цикле только одна операция "+", даже нет умножения. Так же эта фукция дает смешения любых двух цветов, а не только вычисляет оттенки одного.


 
Artyom Trishkin:

Да ладно... Полезная функция родилась:


Да, но лично я вряд ли буду ее использовать, т.к. меня жаба душит генерировать промежуточный массив в несколько кБ для динамического градиента. Для статического конечно она полезна. Но у меня в основном динамические и я вычисляют градиент на ходу без массивов. 
Короче Андрей Хатимлянский был прав. Петр развел меня на время как лоха.
 
Artyom Trishkin:

Да ладно... Полезная функция родилась:

т.к. она генерирует все приведенные здесь алгоритмы в две строчки. Она самая быстрая, т.к. в цикле только одна операция "+", даже нет умножения. Так же эта фукция дает смешения любых двух цветов, а не только вычисляет оттенки одного.

Очень может быть... Цвета, мелодии и звуки... Текущие котировки и их изменения, между прочим, очень неплохо звучат!

А как они выглядят в цвете? И что это будет - цветовая гармония или какофония?

 
aleger:

Очень может быть... Цвета, мелодии и звуки... Текущие котировки и их изменения, между прочим, очень неплохо звучат!

А как они выглядят в цвете? И что это будет - цветовая гармония или какофония?

Дали Петру идею. Вот и поглядим что за "Петрофония" получится.