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

 
prostotrader:
Kannst du nicht tic-tac-toe spielen?

Mit kühlen Farbverläufen und Schattierungen ))))

 
Sergey Basov:

Mit coolen Farbverläufen und Schattierungen )))

Ich verstehe nicht, was daran so lustig sein soll. Das ist sehr traurig. Die Welt hat seit langem eine coole Form für eine nutzlose Sache geschaffen, und hier wird immer noch gefragt, "warum wird sie gebraucht?". Ich musste mit der Welt Schritt halten. Andernfalls - wird die Welt sie vernichten.

 
Реter Konow:

Ich verstehe nicht, was daran so lustig sein soll. Das ist sehr traurig. Die Welt hat schon lange eine coole Form für nutzlose Substanzen geschaffen, und hier wird immer noch gefragt : "Wozu brauchen wir das?". Ich musste mit der Welt Schritt halten. Andernfalls - wird die Welt sie vernichten.

Beweisen Sie also, dass jemand es braucht (GUI, richtige Farbverläufe, Tönungen usw.), auf dem Markt.

Katze und Mann haben das schon lange angedeutet ))

PS. Nichts Persönliches, ich mag auch schöne Schnittstellen, aber nur als Extras in MT.

 
Реter Konow:

Ich verstehe nicht, was daran so lustig sein soll. Das ist sehr traurig. Die Welt hat seit langem eine coole Form für eine nutzlose Sache geschaffen, und hier wird immer noch gefragt, "warum wird sie gebraucht?". Ich musste mit der Welt Schritt halten. Andernfalls - wird die Welt sie vernichten.

Eine Kakerlake, die in allen Farben des Regenbogens gefärbt ist, ja sogar mit Schimmern, wird nicht zerquetscht werden?

 
Sergey Basov:

Dann beweisen Sie, dass jemand es braucht (GUI, richtige Farbverläufe, Schattierungen usw.), auf dem Markt.

Katze und Mann haben das schon lange angedeutet ))

PS. Nichts Persönliches, ich mag auch schöne Schnittstellen, aber nur als Extras in MT.

Wer ist da?

 
Реter Konow:

Und zu all dem kam ich durch einfache Beobachtung des Verhaltens der Zahlen in den Fenstern der Windows-Palette.

Ich verwende eine andere Methode. Ich beziehe nur wissensbasierte Logik ein.

Und Sie scheinen immer noch nicht zu verstehen, dass wir denselben Algorithmus haben, weil es keinen anderen gibt. Der Algorithmus heißt - lineare Funktion, die zwei Punkte im dreidimensionalen Raum (x1,y1,z1) und (x2,y2,z2) verbindet

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

Nur aus irgendeinem Grund, nach deiner allerersten Nachricht zu urteilen, hast du einen Monat gebraucht, um es zu erstellen, und das sogar mit Fehlern, während ich nicht einmal etwas erfinden musste, weil es offensichtlich ein einfaches Problem ist, das zwei Punkte in drei Dimensionen (r1,g1,b1) und (r2,g2,b2) verbindet, das ich aus der Schule sehr gut kenne und verstehe, nicht einmal auf Formelniveau, sondern auf Logikebene. Für die erste Umsetzung brauchte ich etwa 15 Minuten, und der Code funktionierte schon beim ersten (ich weiß nicht mehr, vielleicht auch beim zweiten) Mal.

Ich habe hier bereits geschrieben, dass Ihr Algorithmus mit einer einfacheren und vielseitigeren Funktion wie folgt umgesetzt wird:

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

Ein gemeinsames Array aus zwei Arrays CLR1 und CLR2 ist Ihre Lösung.

Meine Lösung war etwas komplizierter, da ich die Helligkeit der Farbe berechnen und sie anstelle von 128 und 127 einsetzen musste.

Dies ist also wieder einmal die letzte Wiederholung.
Hier ist die einzige Funktion, die Sie brauchen, und sie ist vielseitiger:

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 aufgeführten Algorithmen in zwei Zeilen erzeugt. Sie ist die schnellste, da es nur eine "+"-Operation in der Schleife gibt, nicht einmal eine Multiplikation. Es gibt auch Mischungen von zwei beliebigen Farben und berechnet nicht nur Schattierungen einer Farbe.

 
Nikolai Semko:

Ich verwende eine andere Methode. Ich verwende nur wissensbasierte Logik.

Und Sie scheinen immer noch nicht zu verstehen, dass es nur einen Algorithmus gibt, weil es keinen anderen gibt. Der Algorithmus heißt - lineare Funktion, die zwei Punkte im dreidimensionalen Raum (x1,y1,z1) und (x2,y2,z2) verbindet

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

Nur aus irgendeinem Grund, nach deiner allerersten Nachricht zu urteilen, hast du einen Monat gebraucht, um es zu erstellen, und das sogar mit Fehlern, während ich nicht einmal etwas erfinden musste, weil es offensichtlich ein einfaches Problem ist, das zwei Punkte in drei Dimensionen (r1,g1,b1) und (r2,g2,b2) verbindet, das ich aus der Schule sehr gut kenne und verstehe, nicht einmal auf Formelniveau, sondern auf Logikebene. Für die erste Umsetzung brauchte ich etwa 15 Minuten, und der Code funktionierte schon beim ersten (ich weiß nicht mehr, vielleicht auch beim zweiten) Mal.

Ich habe hier bereits geschrieben, dass Ihr Algorithmus mit einer einfacheren und vielseitigeren Funktion wie folgt umgesetzt wird:

Ein gemeinsames Array aus zwei Arrays CLR1 und CLR2 ist Ihre Lösung.

Meine Lösung war etwas komplizierter, da ich die Helligkeit der Farbe berechnen und sie anstelle von 128 und 127 einsetzen musste.

Deshalb wiederhole ich es ein letztes Mal.
Hier ist die einzige notwendige und vielseitigere Funktion für die Arbeit mit einem Farbverlauf:

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.

Wir haben verschiedene Algorithmen und unterschiedliche Ansätze. Ich habe keine lineare Funktion, die zwei Punkte im dreidimensionalen Raum verbindet. Ich habe ein zweidimensionales Diagramm mit sechs Segmenten, die ein Prisma bilden.

Ihre einzige Funktion gibt nicht die richtige Farbpalette an. Ich habe es bereits gezeigt und bewiesen.

 
Artyom Trishkin:

Eine Kakerlake, die in allen Farben des Regenbogens gefärbt ist, ja mit Schimmern, wird nicht zerquetscht?

Darüber müssen Sie sich keine Sorgen machen.

 
Реter Konow:

Wir haben verschiedene Algorithmen und unterschiedliche Ansätze. Ich habe keine lineare Funktion, die zwei Punkte im dreidimensionalen Raum verbindet. Ich habe ein zweidimensionales Diagramm mit sechs Segmenten, die ein Prisma bilden.

Ihre einzige Funktion gibt nicht die richtige Farbpalette an. Das habe ich bereits gezeigt und bewiesen.

Du machst nur ein Durcheinander, aber wenn du deine Schöpfung vereinfachst, bekommst du, was ich geschrieben habe. Deshalb ist dein Kunstwerk langsamer und funktioniert, weil du so viel durcheinander gebracht hast, dass du sogar die Ziffer 2 durch eine Tangente berechnen kannst.
Prüfen Sie anhand des Codes von Juri Ihren Algorithmus und diesen aus meinem vorherigen Beitrag. Und Sie werden sehen, dass es identisch ist, nur viel schneller und viel kürzer.

 
Nikolai Semko:

Sie haben gerade ein Durcheinander angerichtet, aber wenn Sie Ihre Schöpfung vereinfachen, werden Sie das bekommen, worüber ich geschrieben habe. Deshalb ist dein Kunstwerk langsamer, weil du so viel erfunden hast, dass du die Zahl 2 durch Tangente berechnen kannst.
Prüfen Sie auf der Grundlage von Juris Code und nehmen Sie Ihren Algorithmus aus meinem vorherigen Beitrag . Sie werden sehen, dass es identisch sein wird, nur viel schneller und viel kürzer.

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 umschreiben soll?)

Sie haben mir geholfen, meinen Algorithmus schneller zu machen, so dass ich ihn nicht neu schreiben musste. Vielen Dank dafür. Ansonsten braucht mein Algorithmus nur kosmetische Korrekturen.

Allerdings gibt es offensichtliche Probleme mit Ihrem Algorithmus.