A função de decompor a cor em tons. - página 19

 

Sinto muito, Peter - Eu assumo a partir daqui. Eu já disse tudo o que tinha a dizer sobre o assunto. Não tenho vontade de me repetir.

Não existem seus e meus algoritmos.

Repito, a única coisa digna de atenção neste tópico é esta função, da qual "seu" e "meu" algoritmos podem ser derivados, o resto é lavagem de mãos (tanto do seu lado como do meu:))

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:

Sinto muito, Pyotr - Eu assumo a partir daqui. Eu já disse tudo o que tinha a dizer sobre o assunto. Não tenho vontade de me repetir.

Não existem seus e meus algoritmos.

Novamente, a única coisa digna de atenção neste tópico é esta função da qual você pode obter "seu" e "meu" algoritmos, o resto é lavagem de mãos (tanto do seu lado como do meu :))

Nikolai, eu sou a favor da objetividade. Anexei o roteiro e os screenshots.

Eu sei que você gosta de melhorar suas soluções. Eu também.

Seu algoritmo (infelizmente) cria o gradiente errado. Eu não procurei o erro porque não sei como funciona. Mas você pode fazer isso.

 
Реter Konow:

Nikolai, eu sou a favor da objetividade. Anexei um roteiro e screenshots.

Eu sei que você gosta de melhorar suas soluções. Eu também.

Seu algoritmo (infelizmente) cria o gradiente errado. Eu não procurei o erro porque não sei como funciona. Mas você pode fazer isso.

https://www.mql5.com/ru/forum/282861/page7#comment_8971634

https://www.mql5.com/ru/forum/282861/page9#comment_8987611

https://www.mql5.com/ru/forum/282861/page11#comment_8987978

https://www.mql5.com/ru/forum/282861/page19#comment_9019253
 

Sim, você acha que seu algoritmo funciona corretamente porque se encaixa em sua teoria de como ele funciona corretamente. Eu entendo isso.

No entanto, tomo a paleta Windows como minha referência. Se você comparar a saída do seu algoritmo com a paleta, a diferença é significativa. Você pode vê-lo nos números e visualmente.

Isso é tudo o que eu queria mostrar.

Você pode deixar as coisas assim. Também fica bonito assim.

 
Реter Konow:

Sim, você acha que seu algoritmo funciona corretamente porque se encaixa em sua teoria de como ele funciona corretamente. Eu entendo isso.

No entanto, tomo a paleta Windows como minha referência. Se você comparar a saída do seu algoritmo com a paleta, a diferença é significativa. Você pode vê-lo nos números e visualmente.

Isso é tudo o que eu queria mostrar.

Você pode deixar as coisas assim. Também é lindo.

Você não vê o que estou escrevendo. Eu não gosto da abordagem que tomei, que você mesmo chama de meu algoritmo(menos maléfico). Mas eu não gosto ainda mais de sua abordagem e já expliquei o motivo.

 
Nikolai Semko:

você não vê o que eu estou escrevendo. A abordagem que tomei, que vocês chamam de meu algoritmo, não é do meu agrado (menos maléfico). Mas eu não gosto ainda mais de sua abordagem e expliquei por quê.

Bem, então você também não gosta da paleta Windows. Afinal de contas, tenho uma correspondência quase completa com ele.

 
Реter Konow:

Bem, então você também não gosta da paleta Windows. Afinal, tenho uma correspondência quase perfeita com ele.

Eu já escrevi sobre isso.

E não confunda paleta e gradiente. O gradiente é unidimensional, a paleta é bidimensional ou tridimensional (se você estiver falando de CMYK).

Por exemplo:

é uma paleta vermelha bidimensional

e este é seu gradiente unidimensional.

Você está tentando discutir sobre onde a junção dos dois gradientes (de preto para cor e de cor para branco) é necessária. Você argumenta que as variantes no meio são as únicas corretas, pois são usadas em Paint in Windows. Em seus exemplos acima, onde apenas um componente de cor aparece e o restante é 0, sim - é correto, mas é apenas um caso especial. Não estou afirmando nada, estou apenas dizendo que depende da tarefa em mãos, mas acho lógico colocá-lo no caso mais geral, dependendo da luminosidade da cor (soma de R+B+G).

Por exemplo, em editores gráficos mais sérios, como os da Corel e Adobe, quando se trata de preenchimento do gradiente, há um cenário para o "centro de gravidade" do gradiente:

é um argumento sem miolos.

Estou catapultando para fora deste tópico.

 
Nikolai Semko:


Estou falando da gama de cores. O gradiente pode ser diferente. Mas a gama completa de tonalidades de uma única cor é constante.

Cada cor tem três componentes - três pontos em um gráfico. Há três linhas através delas. Cada linha tem dois segmentos no gráfico. Os segmentos aparecem a partir da refração da luz. O eixo de refração está no centro do gráfico. Cada segmento tem um ângulo de ascensão diferente. A ascensão vai de zero até o valor máximo. Todos os seis segmentos no gráfico representam um prisma. Seus ângulos são constantes para cada faixa. A tarefa é encontrar o valor de um componente em cada ponto das barras. Desta forma, encontro todas as tonalidades de uma cor. Tudo o resto é manipulação derivada desta solução. Você pode mudar os ângulos de subida, pode misturar cores, e assim por diante. A base permanece a mesma.

Em sua solução, a gama de tonalidades é incompleta ou distorcida. Em ambos os casos, a transição de tonalidades não é suave e harmoniosa.


zy. Sobre o centro de gravidade - concordo. Mas é apenas uma manipulação de cálculo de pontos específicos no gráfico. Você pode obter mais valores de componentes no primeiro segmento do que no segundo. É assim que você obtém um "gradiente de centro de gravidade deslocado" (como o exemplo acima).

 
Que tal um pouco de tic-tac-toe?
 

O gráfico é algo parecido com isto:



E a tudo isso, eu vim simplesmente observando o comportamento dos números nas janelas da paleta Windows.

Razão: