Dies ist eine statische Kopie unseres alten Forums. Es sind keine Interaktionen möglich.
This is a static copy of our old forum. Interactions are not possible.

NullAhnung

Erfahrener Schreiberling

  • "NullAhnung" is female
  • "NullAhnung" started this thread

Posts: 332

Date of registration: Apr 28th 2003

1

Saturday, May 8th 2004, 2:38pm

Prog Übung 3

Wie krieg ich das denn hin, dass schwarz das Minimum von den drei anderen ist?

Benjamin

Segelnder Alter Hase

  • "Benjamin" is male

Posts: 3,827

Date of registration: Oct 1st 2002

Location: Region Hannover

Occupation: Alumni

2

Saturday, May 8th 2004, 2:56pm

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]
Es gibt nur eine bessere Sache als auf dem Wasser zu sein: Noch mehr auf dem Wasser sein.

radicarl

Junior Schreiberling

  • "radicarl" is male

Posts: 243

Date of registration: Oct 7th 2003

Location: H-Town

3

Saturday, May 8th 2004, 6:48pm

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?

This post has been edited 1 times, last edit by "radicarl" (May 8th 2004, 6:49pm)


Arne

ThI

  • "Arne" is male

Posts: 1,798

Date of registration: Oct 7th 2002

Location: Hannover :)

Occupation: Lecturer ThI

4

Saturday, May 8th 2004, 9:01pm

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...
"NP - The class of dashed hopes and idle dreams." Complexity Zoo

Ray-D

Alter Hase

  • "Ray-D" is male

Posts: 690

Date of registration: Oct 9th 2002

Location: Zimbabwe-Island Ost Beiträge: 3.427

Occupation: Informatiker

5

Sunday, May 9th 2004, 1:30pm

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?



ja, das habe ich auch festgestellt und mit dem korrektor drüber gesprochen. er meinte dass eine farbe unterscheidlich dargestellt werden könnte. die farbe
cyan = 0.1 magenta = 0.2 yellow = 0.3 und black = 0.4 ist die gleiche wie
cyan = 0.0 magenta = 0.1 yellow = 0.2 und black = 0.5. das liegt daran dass CMY ja additive farben sind, d.h wenn sie sich überlagern erzeugen sie auch schwarz.

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...


nein, das stimmt nicht, da schwarz das minimum aus cyan_temp, magenta_temp und yellow_temp ist und nicht einfach aus den gegebenen werten für CMYK benutzt werden kann.
"ob ich alles weiss, was wir wissen, weiss ich auch nicht, aber ich weiss natürlich niemand von uns weiss etwas was er nicht weiss" - Wolgang Schäuble
Freiheit wird nicht erbettelt, sondern erkämpft


Dieser Beitrag wurde bereits 7 mal editiert, zuletzt von »Ray-D« (Heute, 04:29)

This post has been edited 1 times, last edit by "Ray-D" (May 9th 2004, 1:32pm)


NullAhnung

Erfahrener Schreiberling

  • "NullAhnung" is female
  • "NullAhnung" started this thread

Posts: 332

Date of registration: Apr 28th 2003

6

Sunday, May 9th 2004, 2:29pm

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]


Irgendwie klappt das bei mir alles nicht. Ich muss doch dann import java.lang.Math ganz oben hinschreiben?

Wie sieht dann schwarz aus? void setSchwarz() { double x = min(double cyan, double magenta);
double schwarz = min(double x, double gelb); }

Arne

ThI

  • "Arne" is male

Posts: 1,798

Date of registration: Oct 7th 2002

Location: Hannover :)

Occupation: Lecturer ThI

7

Sunday, May 9th 2004, 3:08pm

Quoted

Original von NullAhnung
Irgendwie klappt das bei mir alles nicht. Ich muss doch dann import java.lang.Math ganz oben hinschreiben?

Nein, musst Du nicht unbedingt, da standardmäßig java.lang.* importiert wird.

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); }


Die Minimumsmethode aus der Klasse java.lang.Math rufst du über Math.min() auf.
"NP - The class of dashed hopes and idle dreams." Complexity Zoo

Cpt. Iglu

Trainee

  • "Cpt. Iglu" is male

Posts: 83

Date of registration: Oct 9th 2003

8

Monday, May 10th 2004, 8:30pm

Quoted

Wie sieht dann schwarz aus? void setSchwarz() { double x = min(double cyan, double magenta);

Du kannst auch schachteln:

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;
"Intuitive Software ist leicht zu lernen. Man muß nur lange genug mit ihr arbeiten."

Ponder Stibbons

migu

free rider

  • "migu" is male

Posts: 2,643

Date of registration: Dec 11th 2001

Occupation: Developer

9

Monday, May 10th 2004, 9:04pm

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;


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?)
tar: Anlegen eines leeren Archivs wird feige verweigert.

np

Junior Schreiberling

Posts: 155

Date of registration: Oct 23rd 2002

10

Tuesday, May 11th 2004, 8:43am

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

Wird nicht benötigt; migu hat recht.