Die Funktion, Farbe in Schattierungen zu zerlegen. - Seite 21

 
Реter Konow:

Mein Algorithmus funktioniert gut. Sie ist schnell (15-20 Mikrosekunden). Ihre funktioniert nicht richtig. Wollen Sie damit sagen, dass ich meinen Algorithmus nach Ihrem Beispiel umgestalten soll?)


Das war's, Peter, du langweilst mich mit deiner Undurchschaubarkeit.

Ich kann es nicht mehr ertragen.

Ich gewinne. Ihr Algorithmus ist perfekt!

 
Nikolai Semko:


Das war's, Peter, du langweilst mich mit deiner Undurchschaubarkeit.

Ich kann es nicht mehr ertragen.

Ich gewinne. Ihr Algorithmus ist perfekt!

Meine ist nicht perfekt. Es ist einfach korrekter.

Die Moral von der Geschicht' ist: weder Syntax, noch Sprache, noch Stil, noch die Einhaltung von Normen! Der Entwickler bestimmt.

 
Реter Konow:

Meine ist nicht perfekt. Es ist einfach treuer.

OK, Ihr Abschnitt im rgb-Raum ist gerader als meiner.
 
Nikolai Semko:
OK, Ihr Abschnitt im RGB-Raum ist unkomplizierter als meiner.

Ja. Das Thema war interessant und nützlich.

 
Die Menschen waren sprachlos...
 
Алексей Тарабанов:
Die Menschen waren sprachlos...
Natürlich haben sie das. Außer mir gab es keine Narren.
 
Nikolai Semko:
Und ob. Es gibt keine Dummköpfe, außer mir.

Komm schon... Eine nützliche Funktion war geboren:

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Funktion der Farbzerlegung.

Nikolai Semko, 2018.10.15 22:21

...

Hier ist die einzige notwendige und vielseitigere Funktion, um mit dem Farbverlauf zu arbeiten:

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

Da es alle hier genannten Algorithmen in zwei Zeilen erzeugt. Sie ist die schnellste, da es nur eine "+"-Operation in der Schleife gibt, nicht einmal eine Multiplikation. Außerdem werden mit dieser Funktion Mischungen aus zwei beliebigen Farben erstellt, nicht nur Schattierungen einer Farbe berechnet.


 
Artyom Trishkin:

Komm schon... Eine nützliche Funktion war geboren:


Ja, aber ich persönlich werde es wahrscheinlich nicht verwenden, da ich mit der Erzeugung eines Zwischenfeldes von mehreren KB für dynamische Farbverläufe geizig bin. Für statische Zwecke ist es sicherlich nützlich. Aber ich habe vor allem dynamische und berechne die Steigung in Echtzeit ohne Arrays.
Jedenfalls hatte Andrei Hatimlansky Recht. Pjotr hat mich eine ganze Zeit lang wie einen Trottel betrogen.
 
Artyom Trishkin:

Komm schon... Eine nützliche Funktion war geboren:

da es alle hier aufgeführten Algorithmen in zwei Zeilen erzeugt. Sie ist die schnellste, da es nur eine "+"-Operation in der Schleife gibt, nicht einmal eine Multiplikation. Außerdem werden mit dieser Funktion Mischungen aus zwei beliebigen Farben erstellt, nicht nur Schattierungen einer Farbe berechnet.

Gut möglich... Farben, Melodien und Klänge... Die aktuellen Zitate und ihre Änderungen klingen übrigens ziemlich gut!

Wie sehen sie in Farbe aus? Und was soll es sein - Farbharmonie oder Kakophonie?

 
aleger:

Es könnte sehr wohl sein... Farben, Melodien und Klänge... Die aktuellen Zitate und ihre Änderungen klingen übrigens sehr gut!

Und wie sehen sie in Farbe aus? Und was soll es sein - Farbharmonie oder Kakophonie?

Sie haben Peter auf eine Idee gebracht. Mal sehen, was für eine Art von 'Petrophonia' es sein wird.