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

 

Es tut mir leid, Peter - ich übernehme ab hier. Ich habe bereits alles gesagt, was ich zu diesem Thema zu sagen habe. Ich habe keine Lust, mich zu wiederholen.

Es gibt keine "dein" und "mein" Algorithmen.

Ich wiederhole, das Einzige, was in diesem Thread Aufmerksamkeit verdient, ist diese Funktion, aus der "Ihre" und "meine" Algorithmen abgeleitet werden können, der Rest ist Handarbeit (sowohl von Ihrer als auch von meiner Seite:))

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:

Es tut mir leid, Peter - ich übernehme ab hier. Ich habe bereits alles gesagt, was ich zu diesem Thema zu sagen habe. Ich habe keine Lust, mich zu wiederholen.

Es gibt keine Algorithmen von Ihnen und mir.

Nochmals, das Einzige, was in diesem Thread Aufmerksamkeit verdient, ist diese Funktion, mit der Sie "Ihre" und "meine" Algorithmen erhalten können, der Rest ist Handarbeit (sowohl von Ihrer als auch von meiner Seite :))

Nikolai, ich bin für Objektivität. Ich habe das Skript und Screenshots beigefügt.

Ich weiß, dass Sie Ihre Lösungen gerne verbessern. Das tue ich auch.

Ihr Algorithmus erzeugt (leider) den falschen Gradienten. Ich habe nicht nach dem Fehler darin gesucht, weil ich nicht weiß, wie es funktioniert. Aber Sie können es schaffen.

 
Реter Konow:

Nikolai, ich bin für Objektivität. Ich habe ein Skript und Bildschirmfotos beigefügt.

Ich weiß, dass Sie Ihre Lösungen gerne verbessern. Das tue ich auch.

Ihr Algorithmus erzeugt (leider) den falschen Gradienten. Ich habe nicht nach dem Fehler darin gesucht, weil ich nicht weiß, wie es funktioniert. Aber Sie können es schaffen.

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
 

Ja, Sie glauben, dass Ihr Algorithmus richtig funktioniert, weil er zu Ihrer Theorie passt, wie er richtig funktioniert. Ich verstehe das.

Ich nehme jedoch die Windows-Palette als Maßstab. Wenn Sie die Ausgabe Ihres Algorithmus mit der Palette vergleichen, ist der Unterschied signifikant. Sie können es in den Zahlen und visuell sehen.

Das ist alles, was ich zeigen wollte.

Sie können es so lassen. Außerdem sieht es auf diese Weise schön aus.

 
Реter Konow:

Ja, Sie glauben, dass Ihr Algorithmus richtig funktioniert, weil er zu Ihrer Theorie passt, wie er richtig funktioniert. Ich verstehe das.

Ich nehme jedoch die Windows-Palette als Maßstab. Wenn Sie die Ausgabe Ihres Algorithmus mit der Palette vergleichen, ist der Unterschied signifikant. Sie können es in den Zahlen und visuell sehen.

Das ist alles, was ich zeigen wollte.

Sie können es so lassen. Es ist auch schön.

Sie sehen nicht, was ich schreibe. Der von mir gewählte Ansatz, den Sie selbst als meinen Algorithmus bezeichnen (weniger böse), gefällt mir nicht. Aber Ihr Ansatz missfällt mir noch mehr, und ich habe erklärt, warum.

 
Nikolai Semko:

Sie sehen nicht, was ich schreibe. Der von mir verfolgte Ansatz, den Sie als meinen Algorithmus bezeichnen, ist nicht nach meinem Geschmack (weniger böse). Aber Ihr Ansatz missfällt mir noch mehr, und ich habe erklärt, warum.

Nun, dann gefällt Ihnen die Windows-Palette auch nicht. Immerhin habe ich eine fast vollständige Übereinstimmung mit ihr.

 
Реter Konow:

Nun, dann gefällt Ihnen die Windows-Palette auch nicht. Immerhin habe ich eine fast perfekte Übereinstimmung mit ihr.

Darüber habe ich bereits geschrieben .

Und verwechseln Sie nicht Palette und Farbverlauf. Der Farbverlauf ist eindimensional, die Palette ist zwei-, drei- oder vierdimensional (wenn es sich um CMYK handelt).

Zum Beispiel:

es ist eine zweidimensionale rote Palette

und dies ist sein eindimensionaler Gradient.

Sie versuchen zu argumentieren, wo der Übergang zwischen den beiden Farbverläufen (von Schwarz zu Farbe und von Farbe zu Weiß) erforderlich ist. Sie argumentieren, dass die Varianten in der Mitte die einzig richtigen sind, da sie in Paint in Windows verwendet werden. In Ihren obigen Beispielen, in denen nur eine Farbkomponente auftaucht und der Rest 0 ist, ist es zwar richtig, aber es ist nur ein Sonderfall. Ich behaupte nichts, ich sage nur, dass es von der jeweiligen Aufgabe abhängt, aber ich denke, es ist logisch, es im allgemeinsten Fall von der Leuchtkraft der Farbe (Summe von R+B+G) abhängig zu machen.

So gibt es zum Beispiel in seriösen Grafikeditoren wie denen von Corel und Adobe bei Farbverlaufsfüllungen eine Einstellung für den "Schwerpunkt" des Farbverlaufs:

Das ist ein unumstößliches Argument.

Ich schweife von diesem Thema ab.

 
Nikolai Semko:


Ich meine damit die Farbpalette. Das Gefälle kann unterschiedlich sein. Aber die gesamte Palette der Schattierungen einer einzigen Farbe ist konstant.

Jede Farbe hat drei Komponenten - drei Punkte auf einem Diagramm. Sie werden von drei Linien durchzogen, die jeweils zwei Segmente im Diagramm haben. Die Segmente entstehen durch die Brechung des Lichts. Die Brechungsachse liegt in der Mitte des Diagramms. Jedes Segment hat einen anderen Steigungswinkel. Die Steigung geht von Null bis zum Maximalwert. Alle sechs Segmente auf dem Diagramm stellen ein Prisma dar, dessen Winkel für jeden Bereich konstant ist. Die Aufgabe besteht darin, den Wert einer Komponente in jedem Punkt der Balken zu finden. Auf diese Weise finde ich alle Schattierungen einer Farbe. Alles andere ist eine abgeleitete Manipulation dieser Lösung. Sie können die Aufstiegswinkel ändern, Farben mischen und so weiter. Die Grundlage bleibt dieselbe.

In Ihrer Lösung ist die Palette der Farbtöne entweder unvollständig oder verzerrt. In beiden Fällen ist der Übergang der Farbtöne nicht fließend und harmonisch.


zy. Was den Schwerpunkt betrifft, so stimme ich zu. Dabei handelt es sich jedoch nur um eine Manipulation bei der Berechnung bestimmter Punkte im Diagramm. Sie können im ersten Segment mehr Komponentenwerte erhalten als im zweiten. So erhält man ein "verschobenes Schwerpunktgefälle" (wie im obigen Beispiel).

 
Wie wäre es mit einem kleinen Tic-Tac-Toe?
 

Das Diagramm sieht etwa so aus:



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