La funzione di scomporre il colore in sfumature. - pagina 19

 

Mi dispiace, Pyotr - ci penso io. Ho già detto tutto quello che avevo da dire sull'argomento. Non ho voglia di ripetermi.

Non ci sono algoritmi tuoi e miei.

Ripeto, l'unica cosa degna di attenzione in questo thread è questa funzione, da cui si possono ricavare i "tuoi" e i "miei" algoritmi, il resto è lavaggio della mano (sia da parte tua che mia:))

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:

Mi dispiace, Peter - ci penso io. Ho già detto tutto quello che avevo da dire sull'argomento. Non ho alcun desiderio di ripetermi.

Non ci sono algoritmi tuoi e miei.

Di nuovo, l'unica cosa degna di attenzione in questo thread è questa funzione da cui si possono ottenere i "tuoi" e "miei" algoritmi, il resto è una lavata di mano (sia da parte tua che mia :))

Nikolai, io sono per l'obiettività. Ho allegato lo script e gli screenshot.

So che ti piace migliorare le tue soluzioni. Anch'io.

Il tuo algoritmo (purtroppo) crea il gradiente sbagliato. Non ho cercato l'errore, perché non so come funziona. Ma si può fare.

 
Реter Konow:

Nikolai, io sono per l'obiettività. Ho allegato uno script e degli screenshot.

So che ti piace migliorare le tue soluzioni. Anch'io.

Il tuo algoritmo (purtroppo) crea il gradiente sbagliato. Non ho cercato l'errore perché non so come funziona. Ma si può fare.

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
 

Sì, voi pensate che il vostro algoritmo funzioni correttamente perché si adatta alla vostra teoria su come funziona correttamente. Lo capisco.

Tuttavia, prendo la tavolozza di Windows come punto di riferimento. Se confrontate l'output del vostro algoritmo con la tavolozza, la differenza è significativa. Lo si può vedere nei numeri e visivamente.

Questo è tutto quello che volevo mostrare.

Potete lasciarlo così. È anche bello in questo modo.

 
Реter Konow:

Sì, voi pensate che il vostro algoritmo funzioni correttamente perché si adatta alla vostra teoria su come funziona correttamente. Lo capisco.

Tuttavia, prendo la tavolozza di Windows come punto di riferimento. Se confrontate l'output del vostro algoritmo con la tavolozza, la differenza è significativa. Lo si può vedere nei numeri e visivamente.

Questo è tutto ciò che volevo mostrare.

Potete lasciarlo così. È anche bello.

Tu non vedi quello che sto scrivendo. Non mi piace l'approccio che ho adottato, che tu chiami il mio algoritmo(meno male). Ma il tuo approccio mi dispiace ancora di più e ti ho spiegato perché.

 
Nikolai Semko:

non vedi quello che sto scrivendo. L'approccio che ho adottato, che lei chiama il mio algoritmo, non è di mio gradimento (meno male). Ma il tuo approccio mi piace ancora di più e ti ho spiegato perché.

Beh, allora non ti piace nemmeno la palette di Windows. Dopo tutto, ho una corrispondenza quasi completa con esso.

 
Реter Konow:

Beh, allora non ti piace nemmeno la palette di Windows. Dopo tutto, ho una corrispondenza quasi perfetta con esso.

Ho già scritto su questo.

E non confondere tavolozza e gradiente. Il gradiente è unidimensionale, la tavolozza è due o tre, o quattro dimensioni (se si parla di CMYK).

Per esempio:

è una tavolozza rossa bidimensionale

e questo è il suo gradiente unidimensionale.

Stai cercando di discutere su dove sia necessaria la congiunzione dei due gradienti (dal nero al colore e dal colore al bianco). Tu sostieni che le varianti al centro sono le uniche corrette, perché sono usate in Paint in Windows. Nei tuoi esempi precedenti, dove appare solo un componente di colore e il resto è 0, sì - è corretto, ma è solo un caso speciale. Non sto asserendo nulla, sto solo dicendo che dipende dal compito da svolgere, ma penso che sia logico metterlo nel caso più generale, a seconda della luminosità del colore (somma di R+B+G).

Per esempio, negli editor grafici più seri, come quelli di Corel e Adobe, quando si tratta di riempimenti a gradiente, c'è un'impostazione per il "centro di gravità" del gradiente:

è un argomento che non fa una piega.

Mi sto catapultando fuori da questo argomento.

 
Nikolai Semko:


Sto parlando della gamma di colori. Il gradiente può essere diverso. Ma l'intera gamma di sfumature di un singolo colore è costante.

Ogni colore ha tre componenti - tre punti su un grafico. Ci sono tre linee che li attraversano e ogni linea ha due segmenti sul grafico. I segmenti appaiono dalla rifrazione della luce. L'asse di rifrazione è al centro del grafico. Ogni segmento ha un diverso angolo di salita. La salita va da zero al valore massimo. Tutti e sei i segmenti del grafico rappresentano un prisma e i loro angoli sono costanti per ogni intervallo. Il compito è trovare il valore di un componente in ogni punto delle barre. In questo modo, trovo tutte le sfumature di un colore. Tutto il resto è una manipolazione derivata di questa soluzione. Si possono cambiare gli angoli di salita, si possono mescolare i colori, e così via. La base rimane la stessa.

Nella tua soluzione, la gamma di sfumature è incompleta o distorta. In entrambi i casi, la transizione delle sfumature non è liscia e armoniosa.


zy. Sul centro di gravità - sono d'accordo. Ma è solo una manipolazione del calcolo di punti specifici sul grafico. Si possono ottenere più valori di componenti nel primo segmento che nel secondo. Così si ottiene un "centro di gravità spostato" (come nell'esempio precedente).

 
Non sai fare il tic-tac-toe?
 

Il grafico appare più o meno così:



E a tutto questo, sono arrivato semplicemente osservando il comportamento dei numeri nelle finestre della palette di Windows.