Autor Beitrag
the_titan
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Do 27.05.10 00:03 
Hallo, ich schreibe gerade eine Funktion, die die Farbe berechnet, die sich ergbit wenn man zwei Farben übereinanderlegt. Die Farben haben jeweils 4 Kanäle: für Rot, Grün, Blau und Alpha (Transparenz).
Die Variablen sind Doubles und enthalten Werte von 0 (0%) bis 1 (100%).
So sehen meine Berechnungen bis jetzt aus:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
    Ergebnis.R := (1-Vordergrund.A)*Hintergrund.R + Vordergrund.A*Vordergrund.R;
    Ergebnis.G := (1-Vordergrund.A)*Hintergrund.G + Vordergrund.A*Vordergrund.G;
    Ergebnis.B := (1-Vordergrund.A)*Hintergrund.B + Vordergrund.A*Vordergrund.B;
    if Hintergrund.A>Vordergrund.A
      then Ergebnis.A := Hintergrund.A + Vordergrund.A*(1-Hintergrund.A)
      else Ergebnis.A := Vordergrund.A + Hintergrund.A*(1-Vordergrund.A);


Eigentlich bekomme ich damit akzeptable Ergebnisse, allerdings stimmen sie mit den Ergebnissen von anderen Grafikprogrammen nicht ganz überein.

Wisst ihr wo ich vielleicht ein Fehler gemacht habe?

Ich würde mich sehr über Antworten freuen,
the_titan

p.s. Ich weiß, bei der Frage geht es weniger um Delphi, als um die Berechnung an sich, aber ich wäre trotzdem sehr dankbar über eure Hilfe.


Zuletzt bearbeitet von the_titan am Do 27.05.10 12:00, insgesamt 2-mal bearbeitet
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Do 27.05.10 00:26 
user profile iconthe_titan hat folgendes geschrieben Zum zitierten Posting springen:
enthalten Werte von 0 (0%) und 1 (100%).
Und dazwischen nichts :shock: ?
*scnr*

Ich denke, du suchst die zwei letzten Formeln hier: en.wikipedia.org/wik...positing#Description

_________________
>λ=
the_titan Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Do 27.05.10 01:44 
achso, doch natürlich... ich meinte von 0 bis 1