Seite 1 von 1

Drei Farben mischen

Verfasst: 28.01.2018 17:20
von Benubi
Hallo!

Ein Problem, auf das ich gestoßen bin, und auf das ich aufgrund meiner geistigen Mittelmäßigkeit noch keine Antwort selbst gefunden habe, ist Folgendes:

Ich würde gerne 3 Farben mit einander mischen. Die Prozedure-Deklaration sollte so aussehen, aber ich finde ja nicht die Antwort für den Inhalt dieser Prozedur, vielleicht weis ja jemand was?

Code: Alles auswählen

 Declare.i Mix3Colors(C1.l, A1.a, C2.l, A2.a, C3.l, A3.a)
Der jeweilige Wert von A1-A3 - also der Stärke-Faktor oder wie man das nennt - liegt bei 0-255. Es können auch alle 3 Farben auf 255 stehen - dann würden alle zu 100% mit einander gemischt werden, sozusagen... Wenn alle Farben mit Ax auf 0 stehen, soll auch eine 0 als Ergebnis rauskommen - das mische ich dann gerne mit einer Hintergrund-Textur/Pixel als Endergebnis vom neuen Skin also einfach wieder 2 Farben mischen, das Ergebnis dieser Mix3Colors() Prozedur und ein Hintergrund-Pixel.

Die Idee und das Problem ist bei mir entstanden, als ich Texturen farblich "skinnen" wollte, und hierfür mehrere Farben einsetzen wollte... Also Vordergrund/Hintergrund/Dekor -Farben oder sowas.

Ist sowas überhaupt möglich? Das muß doch möglich sein, oder habe ich einen Logik-Fehler in mein Wunschproblem eingebaut?

Ich habe den Instinkt, daß es irgendwie ganz einfach sein muß aber ich komme einfach nicht dahinter; ich war auch schon immer "mäßig begabt" in Mathe :/


Grüße,

Benubi

Re: Drei Farben mischen

Verfasst: 28.01.2018 18:05
von GPI
Meinst du so?

Code: Alles auswählen

Procedure.i Mix3Color(c1.i,a1.i,c2.i,a2.i,c3.i,a3.i)
  Protected ages=a1+a2+a3
  Protected red,green,blue
  If ages>0
    red=Red(c1)*a1+Red(c2)*a2+Red(c3)*a3
    red/ages
    green=Green(c1)*a1+Green(c2)*a2+Green(c3)*a3
    green/ages
    blue=Blue(c1)*a1+Blue(c2)*a2+Blue(c3)*a3
    blue/ages
    ProcedureReturn RGB(red,green,blue)
  EndIf
  ProcedureReturn 0
EndProcedure

Re: Drei Farben mischen

Verfasst: 28.01.2018 20:14
von Benubi
Hallo GPI,

Danke für Deine Antwort! Ich habe es in mein Snippet bzw. Include eingebaut und muß jetzt eine Datei generieren mit GIMP bevor ich das testen kann. Außerdem kämpfe ich mit unvorhergesehenen Problemen im Main-Sourcecode dieses langjährigen Experimentes... Da bin ich mal gespannt ob das wirklich so einfach geht wie ich es mir wünsche ^^

Bis demnächst...

Re: Drei Farben mischen

Verfasst: 29.01.2018 10:49
von NicTheQuick
Die Aufgabe ist nicht ganz wohl definiert. Gibt man für a1 = a2 = a3 = 1 an, dann passiert in GPIs Variante das gleiche wie wenn a1 = a2 = a3 = 255 ist. Wenn aber a1 = a2 = a3 = 0, dann kommt direkt 0 raus. Hier müsste man sich noch überlegen, wie man den Übergang besser macht.