![]() |
Source code |
1 2 3 |
min:=Wert1 if Wert2 < min then min:=Wert2 if Wert3 < min then min:=Wert3; |
Quoted
rot = 1.0 - cyan - schwarz
gruen = 1.0 - magenta - schwarz
blau = 1.0 - gelb - schwarz
In der umgekehrten Richtung ist die Umrechnung wie folgt:
cyantmp = 1.0 - rot
magentatmp = 1.0 - gruen
gelbtmp = 1.0 - blau
schwarz = min{cyantmp, magentatmp, gelbtmp}
cyan = cyantmp - schwarz
magenta = magentatmp - schwarz
gelb = gelbtmp - schwarz
This post has been edited 1 times, last edit by "radicarl" (May 8th 2004, 6:49pm)
Date of registration: Oct 9th 2002
Location: Zimbabwe-Island Ost Beiträge: 3.427
Occupation: Informatiker
Quoted
Original von radicarl
kann es sein das die umrechnung nur in eine richtung geht, oder das da irgendwas falsch ist?
Quoted
rot = 1.0 - cyan - schwarz
gruen = 1.0 - magenta - schwarz
blau = 1.0 - gelb - schwarz
In der umgekehrten Richtung ist die Umrechnung wie folgt:
cyantmp = 1.0 - rot
magentatmp = 1.0 - gruen
gelbtmp = 1.0 - blau
schwarz = min{cyantmp, magentatmp, gelbtmp}
cyan = cyantmp - schwarz
magenta = magentatmp - schwarz
gelb = gelbtmp - schwarz
im beispiel werden mit 0.1, 0.2, 0.3, 0.4, folgende RGB-Farbe erzeugt:
rot = 0.5, gruen = 0.4 und blau = 0.3.
aus dieser RGB eine CMKY ergibt
cyan = 0, magenta = .1, gelb = .2, schwarz = .5 .
oder sieht die genauso aus wie die erste?
Quoted
Original von radicarl
du hast da 'nen Rechenfehler:
im beispiel werden mit 0.1, 0.2, 0.3, 0.4, folgende RGB-Farbe erzeugt:
rot = 0.5, gruen = 0.4 und blau = 0.3.
daraus ergibt sich über die Formeln: (ich mache es an cyan mal vor)
cyantmp = 1.0 - rot = 1.0 - 0.5 = 0.5
cyan = cyantmp - schwarz = 0.5 - 0.4 = 0.1 und das war es ja auch bei der Eingabe...
This post has been edited 1 times, last edit by "Ray-D" (May 9th 2004, 1:32pm)
Quoted
Original von metalhen
Entweder ne Minimumsfunktion selber schreiben, ganz einfach zum Beispiel nach so einer Manier:
![]()
Source code
1 2 3 min:=Wert1 if Wert2 < min then min:=Wert2 if Wert3 < min then min:=Wert3;
oder die Klasse java.lang.Math nutzen. Diese enthält eine Minimumsfunktion für 2 Werte. Muss man dann eben für die 3 Werte schachteln.
siehe [URL=http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Math.html#min(double,%20double)]APIdoc[/URL]
Quoted
Original von NullAhnung
Irgendwie klappt das bei mir alles nicht. Ich muss doch dann import java.lang.Math ganz oben hinschreiben?
Quoted
Original von NullAhnung
Wie sieht dann schwarz aus? void setSchwarz() { double x = min(double cyan, double magenta);
double schwarz = min(double x, double gelb); }
Quoted
Wie sieht dann schwarz aus? void setSchwarz() { double x = min(double cyan, double magenta);
![]() |
Source code |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
. . public void calcCMYK() { cyanTMP = 1.0 - getRed(); magentaTMP = 1.0 - getGreen(); gelbTMP = 1.0 - getBlue(); schwarz = Math.min( cyanTMP, Math.min( magentaTMP, gelbTMP)); cyan = cyanTMP - schwarz; magenta = magentaTMP - schwarz; gelb = gelbTMP - schwarz; } . . private double cyan, cyanTMP; private double magenta, magentaTMP; private double gelb, gelbTMP; private double schwarz; |
![]() |
Source code |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
public void calcCMYK() { cyanTMP = 1.0 - getRed(); magentaTMP = 1.0 - getGreen(); gelbTMP = 1.0 - getBlue(); schwarz = Math.min( cyanTMP, Math.min( magentaTMP, gelbTMP)); cyan = cyanTMP - schwarz; magenta = magentaTMP - schwarz; gelb = gelbTMP - schwarz; } . private double cyan, cyanTMP; private double magenta, magentaTMP; private double gelb, gelbTMP; private double schwarz; |
Quoted
Original von migu
Die Schachtelung gefällt mir.
Die temporären Variablen sollte man aber besser nicht als Attribute der Klasse realisieren, sondern innerhalb der Methode deklarieren, weil sie nur dort gebraucht werden. Das ist eine allgemein sinnvolle Regel. (Oder werden xxxTMP auch woanders benötigt?)