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

 
prostotrader:
А слабо крестики-нолики забацать?

С крутыми градиентами и оттенками )))

 
Sergey Basov:

С крутыми градиентами и оттенками )))

Не понимаю, что здесь смешного. Это очень грустно. Мир давно создает крутую форму для бесполезной сути, а здесь все еще спрашивают "а зачем это нужно?". Нужно чтобы не отстать от Мира. Иначе, - Мир раздавит. 

 
Реter Konow:

Не понимаю, что здесь смешного. Это очень грустно. Мир давно создает крутую форму для бесполезной сути, а здесь все еще спрашивают "а зачем это нужно?". Нужно чтобы не отстать от Мира. Иначе, - Мир раздавит. 

Дак докажите, что это кому-то нужно (GUI, правильный градиент, оттенки и т.д.), в маркете.

Кот с мужиком давно на это намекают ))

PS. Ничего личного, мне красивые интерфейсы тоже нравятся, но только как дополнительные возможности в MT.

 
Реter Konow:

Не понимаю, что здесь смешного. Это очень грустно. Мир давно создает крутую форму для бесполезной сути, а здесь все еще спрашивают "а зачем это нужно?". Нужно чтобы не отстать от Мира. Иначе, - Мир раздавит. 

Таракана, окрашенного во все цвета радуги, да с переливами, не раздавят?

 
Sergey Basov:

Дак докажите, что это кому-то нужно (GUI, правильный градиент, оттенки и т.д.), в маркете.

Кот с мужиком давно на это намекают ))

PS. Ничего личного, мне красивые интерфейсы тоже нравятся, но только как дополнительные возможности в MT.

Кто здесь?

 
Реter Konow:

И ко всему этому, я пришел просто наблюдая за поведением цифр в окошках палитры виндоус.

Я использую другой метод. Просто включаю логику, базирующуюся на знаниях.

И ты, по-моему, до сих пор, не понял что алгоритм у нас один, т.к. другого просто нет. Алгоритм называется - линейная функция, соединяющие две точки в трехмерном  пространстве (x1,y1,z1) и (x2,y2,z2)

http://www.cleverstudents.ru/line_and_plane/canonical_equations_of_line_in_space.html

Только, почему-то, судя по твоему самому первому сообщению, тебе понадобился месяц на его создание, да еще и с ошибками, а мне даже придумывать ничего не надо было, т.к. это очевидная простая задача соединение двух точек в трехмерном пространстве (r1,g1,b1) и (r2,g2,b2), которую я знаю и осознаю очень хорошо еще со школы даже не на уровне формул, а на уровне логики. На первую реализацию у меня ушло минут 15 и код заработал с первого (не помню, может со второго) раза.

Я уже писал здесь, что твой алгоритм реализуется с помощью более простой и более универсальной функции следующим образом:

   color clr=clrViolet;
   uint CLR1[],CLR2[];
   Gradient(clrWhite, clr, CLR1,128); // получаем массив из 128 элементов градиента от белого цвета до цвета clr 
   Gradient(clr, clrBlack, CLR2,127); // получаем массив из 127 элементов градиента от цвета clr до черног цвета  

общий массив из двух массивов CLR1 и CLR2 и есть твое решение.

Мое решение было, чуть сложнее, т.к. нужно вычислять светлоту цвета и подствлять ее вместо 128 и 127.

поэтому еще раз - последний повторяю. 
Вот единственная нужная и более универсальная функция для работы с градиентом:

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;
     }
  }

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

 
Nikolai Semko:

Я использую другой метод. Просто включаю логику, базирующуюся на знаниях.

И ты, по-моему, до сих пор, не понял что алгоритм у нас один, т.к. другого просто нет. Алгоритм называется - линейная функция, соединяющие две точки в трехмерном  пространстве (x1,y1,z1) и (x2,y2,z2)

http://www.cleverstudents.ru/line_and_plane/canonical_equations_of_line_in_space.html

Только, почему-то, судя по твоему самому первому сообщению, тебе понадобился месяц на его создание, да еще и с ошибками, а мне даже придумывать ничего не надо было, т.к. это очевидная простая задача соединение двух точек в трехмерном пространстве (r1,g1,b1) и (r2,g2,b2), которую я знаю и осознаю очень хорошо еще со школы даже не на уровне формул, а на уровне логики. На первую реализацию у меня ушло минут 15 и код заработал с первого (не помню, может со второго) раза.

Я уже писал здесь, что твой алгоритм реализуется с помощью более простой и более универсальной функции следующим образом:

общий массив из двух массивов CLR1 и CLR2 и есть твое решение.

Мое решение было, чуть сложнее, т.к. нужно вычислять светлоту цвета и подствлять ее вместо 128 и 127.

поэтому еще раз - последний повторяю. 
Вот единственная нужная и более универсальная функция для работы с градиентом:

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

У нас разные алгоритмы и разные подходы. Никакой линейной функции соединяющей две точки в трехмерном пространстве у меня нет. У меня двумерный график с шестью отрезками образующими призму. 

Твоя единственная и универсальная функция не дает верного диапазона цветов. Я уже и показал, и доказал.  

 
Artyom Trishkin:

Таракана, окрашенного во все цвета радуги, да с переливами, не раздавят?

На этот счет можете не беспокоится.

 
Реter Konow:

У нас разные алгоритмы и разные подходы. Никакой линейной функции соединяющей две точки в трехмерном пространстве у меня нет. У меня двумерный график с шестью отрезками образующими призму. 

Твоя единственная и универсальная функция не дает верного диапазона цветов. Я уже и показал и доказал.  

Да ты просто нагородил огород, но если упросить твое творение, то получится то, о чем я писал. Поэтому и медленне твое произведение исскуства и работает, т.к. нагородил такого, что даже цифру 2 через тангенс вычисляешь. 
Проверь на основе кода Юрия взяв свой алгоритм и этот из моего предыдущего сообщения. И увидишь, что будет идентично, только быстрее гораздо и значительно короче.

 
Nikolai Semko:

Да ты просто нагородил огород, но если упросить твое творение, то получится то, о чем я писал. Поэтому и медленне твое произведение исскуства и работает, т.к. нагородил такого что цифру 2 через тангенс вычисляешь. 
Проверь на основе кода Юрия взяв свой алгоритм и этот из моего предыдущего сообщения. И увидишь, что будет идентично, только быстрее гораздо и значительно короче.

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

Ты помог мне сделать мой алгоритм быстрее, так, что мне не пришлось его переписывать. За это - спасибо. В остальном, - ничего кроме косметической коррекции моему алгоритму не требуется.

Однако, с твоим алгоритмом есть очевидные проблемы.

Причина обращения: