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

 
prostotrader:
Non sai fare il tic-tac-toe?

Con gradienti freddi e sfumature ))))

 
Sergey Basov:

Con gradienti e sfumature fresche )))

Non vedo cosa ci sia da ridere. È molto triste. Il mondo ha creato da tempo una forma figa per una causa inutile, ed ecco che si chiedono ancora "perché è necessario?". Necessario per stare al passo con il mondo. Altrimenti, - il mondo lo schiaccerà.

 
Реter Konow:

Non vedo cosa ci sia da ridere. È molto triste. Il mondo ha creato da tempo una forma figa per una sostanza inutile, e qui si chiedono ancora "perché ne abbiamo bisogno?". Necessario per stare al passo con il mondo. Altrimenti, - il mondo lo schiaccerà.

Quindi dimostrate che qualcuno ne ha bisogno (GUI, gradiente adeguato, sfumature, ecc.), nel mercato.

Il gatto e l'uomo hanno accennato a questo per molto tempo ))

PS. Niente di personale, anche a me piacciono le belle interfacce, ma solo come extra in MT.

 
Реter Konow:

Non vedo cosa ci sia da ridere. È molto triste. Il mondo ha creato da tempo una forma figa per una causa inutile, ed ecco che si chiedono ancora "perché è necessario?". Necessario per stare al passo con il mondo. Altrimenti, - il mondo lo schiaccerà.

Uno scarafaggio tinto in tutti i colori dell'arcobaleno, sì con i brillantini, non sarà schiacciato?

 
Sergey Basov:

Poi dimostrate che qualcuno ne ha bisogno (GUI, gradiente corretto, sfumature, ecc.), nel mercato.

Il gatto e l'uomo hanno accennato a questo per molto tempo ))

PS. Niente di personale, anche a me piacciono le belle interfacce, ma solo come extra in MT.

Chi c'è?

 
Реter Konow:

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

Io uso un metodo diverso. Ho solo incorporato una logica basata sulla conoscenza.

E ancora non sembra capire che abbiamo lo stesso algoritmo, perché non ce n'è un altro. L'algoritmo è chiamato - funzione lineare che collega due punti nello spazio tridimensionale (x1,y1,z1) e (x2,y2,z2)

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

Solo che per qualche motivo, a giudicare dal tuo primissimo messaggio, ci hai messo un mese per crearlo, e anche con errori, mentre io non ho dovuto nemmeno inventare nulla, perché è ovviamente un semplice problema che collega due punti in tre dimensioni (r1,g1,b1) e (r2,g2,b2), che conosco e capisco molto bene dalla scuola, nemmeno a livello di formula, ma a livello di logica. La prima realizzazione mi ha preso circa 15 minuti e il codice ha funzionato dalla prima (non ricordo, forse dalla seconda) volta.

Ho già scritto qui che il tuo algoritmo è implementato usando una funzione più semplice e versatile come segue:

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

Un array comune di due array CLR1 e CLR2 è la vostra soluzione.

La mia soluzione era, leggermente più complicata, perché bisogna calcolare la luminosità del colore e sostituirla al posto di 128 e 127.

Quindi ancora una volta - l'ultima da ripetere.
Ecco l'unica funzione di gradiente di cui hai bisogno, ed è più versatile:

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

poiché genera tutti gli algoritmi qui riportati in due righe. È il più veloce perché c'è solo un'operazione "+" nel ciclo, nemmeno la moltiplicazione. Dà anche miscele di due colori qualsiasi, non solo calcola le sfumature di uno.

 
Nikolai Semko:

Io uso un metodo diverso. Uso solo la logica basata sulla conoscenza.

E ancora non sembra capire che c'è un solo algoritmo, perché non ce n'è un altro. L'algoritmo è chiamato - funzione lineare che collega due punti nello spazio tridimensionale (x1,y1,z1) e (x2,y2,z2)

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

Solo che per qualche motivo, a giudicare dal tuo primissimo messaggio, ci hai messo un mese per crearlo, e anche con errori, mentre io non ho dovuto nemmeno inventare nulla, perché è ovviamente un semplice problema che collega due punti in tre dimensioni (r1,g1,b1) e (r2,g2,b2), che conosco e capisco molto bene dalla scuola, nemmeno a livello di formula, ma a livello di logica. La prima realizzazione mi ha preso circa 15 minuti e il codice ha funzionato dalla prima (non ricordo, forse dalla seconda) volta.

Ho già scritto qui che il tuo algoritmo è implementato usando una funzione più semplice e versatile come segue:

Un array comune di due array CLR1 e CLR2 è la vostra soluzione.

La mia soluzione è stata un po' più complicata perché devo calcolare la luminosità del colore e sostituirla al posto di 128 e 127.

quindi lo ripeterò un'ultima volta.
Ecco l'unica funzione necessaria e più versatile per lavorare con un gradiente:

poiché genera tutti gli algoritmi qui riportati in due righe. È il più veloce perché c'è solo un'operazione "+" nel ciclo, nemmeno la moltiplicazione. Anche questa funzione dà miscele di due colori qualsiasi, non solo calcola le sfumature di uno.

Abbiamo diversi algoritmi e diversi approcci. Non ho nessuna funzione lineare che colleghi due punti nello spazio tridimensionale. Ho un grafico bidimensionale con sei segmenti che formano un prisma.

La tua unica funzione non dà la giusta gamma di colori. L'ho già mostrato e dimostrato.

 
Artyom Trishkin:

Uno scarafaggio colorato in tutti i colori dell'arcobaleno, sì con i brillantini, non verrà schiacciato?

Non devi preoccuparti di questo.

 
Реter Konow:

Abbiamo diversi algoritmi e diversi approcci. Non ho nessuna funzione lineare che colleghi due punti nello spazio tridimensionale. Ho un grafico bidimensionale con sei segmenti che formano un prisma.

La tua unica funzione non dà la giusta gamma di colori. L'ho già mostrato e dimostrato.

Stai solo facendo confusione, ma se semplifichi la tua creazione, otterrai quello che ho scritto. Ecco perché la tua opera d'arte è più lenta e funziona, perché hai incasinato così tanto che puoi persino calcolare la cifra 2 attraverso una tangente.
Controlla sulla base del codice di Yuri prendendo il tuo algoritmo e questo dal mio post precedente. E vedrete che sarà identico, solo molto più veloce e molto più breve.

 
Nikolai Semko:

Hai appena fatto un po' di confusione, ma se semplifichi la tua creazione, otterrai quello che ho scritto. Ecco perché la tua opera d'arte è più lenta, perché hai inventato così tanta roba, che puoi calcolare il numero 2 attraverso la tangente.
Controlla sulla base del codice di Yuri e prendi il tuo algoritmo dal mio post precedente . Vedrete che sarà identico, solo molto più veloce e molto più breve.

Il mio algoritmo funziona bene. È veloce (15-20 microsecondi). Il tuo non funziona correttamente. Stai suggerendo che dovrei riscrivere il mio algoritmo secondo il tuo esempio?)

Mi hai aiutato a rendere il mio algoritmo più veloce, così non ho dovuto riscriverlo. Grazie per questo. Altrimenti, il mio algoritmo non ha bisogno di altro che di correzioni cosmetiche.

Tuttavia, ci sono problemi evidenti con il suo algoritmo.