PDA

View Full Version : [Frage] RGB-Würfel in Runde 3


Martinez
06-05-2004, 17:57
Hab das schwere Bsp. bekommen mit dem RGB-Würfel. Ich finde es hört sich recht interessant an, nur komm ich mit der letzten Zeile in der Spez. nicht ganz klar:

Als Ausgabe sollen Sie für jede der 8 Ecken dieses Teilquaders den normierten Abstand liefern, den dieser Eckpunkt (der einer darstellbaren Farbe entspricht) von dem tatsächlichen Punkt hat. Der normierte Abstand ist jener Abstand der, wenn man alle 8 Abstände aufsummiert, 1 ergibt.

Was meinen die mit "normierten Abstand"? :confused:

Vielleicht kennt ja jemand dieses Bsp und kann mir weiterhelfen.

Thx im Voraus

Martinez

finyfunny
06-05-2004, 18:15
ich kenn das beispiel von früher der normierte Abstand berechnet sich so:

normierterAbstand=echterAbstand/SummeallerAbstände
ich hoffe das hilft dir

lg finyfunny :ausheck:

Maggot
06-05-2004, 21:16
Ist dass das Beispiel wo du mit der Ratio 7:7:3 ein RGB wert convertieren musst? ich habe gedacht dass wäre ein 1. Runde Beispiel wenns denn so sei.
Das hab ich nämlich in runde 2 "bearbeiten" müssen.
Hätte daher 4 source codes zur verfügung....

mfg Maggot

Martinez
07-05-2004, 14:57
ja, genau dieses bsp, nur muss man eben statt den koordinaten des quaders, den normierten Abstand zu allen 8 Eckpunkten ausgeben.

Danke für den Tip.
sehr hilfreich.

Martinez

InspectorGadjet
14-05-2004, 13:59
habe da ein kleines problem bezüglich der spezifikation und zwar folgender satz:



Um eine Farbe aus dem Farbraum (0..255, 0.255, 0..255) in einen kleineren Farbraum zu konvertieren, muß der RGB-Farbwürfel in Quader unterteilt werden. Die Seitenlängen der Teilquader erhalten Sie, indem Sie auf der Rot- und auf der Grün-Achse 255/7 berechnen und auf der Blau-Achse 255/3. Wenn sich für die resultierenden Eckpunkte der Teilquader Koordinaten mit Nachkommastellen ergeben (das passiert sicher bei 255/7), müssen Sie die Koordinaten dieser Eckpunkte auf ganze Zahlen runden. Bei der Umwandlung wird festgestellt, in welchem Teilquader der eingelesene Farbwert liegt. Wenn der Punkt genau auf der Grenze von Quadern liegt, wählen Sie jenen Teilquader, dessen Koordinaten am kleinsten sind.

heißt das, dass man bei den grenzen zuerst Runden muss und nacher vergleichen, in welchem teilquader der punkt liegt... oder muss man zuerst überprüfen und nacher die grenzen runden?

gelbasack
14-05-2004, 14:22
Die Grenzen sind ganze Zahlen, also vorher Grenzen Runden, dann schauen, in welchem Teilquader die Zahlen liegen.

crash1980
14-05-2004, 14:23
Ja genau,
also für Rot und Grün i * 255 / 7 für alle i Teilgrenzen.
Machs auch gerade, das lustige dabei ist nur daß beim Runden bei mir nicht für 255/7 * i die selben Grenzen rauskamen, wie bei i*255/7 (Rundungsfehler, also am besten die Grenzen fürs Testen ausgeben lassen)

Ich häng nur grad bei der Abstandsberechnung, vielleicht kann mir wer helfen.
Ich hab jetzt die Koordinaten der 8 Eckpunkte in 8 Arrays gespeichert, genauso wie die Eingabe. Da ich aber nicht 8 mal die Formel für die Entfernung eintippen will, kann mir wer nen Hinweis geben, wie ich eine Methode dafür erstelle. Mein Problem dabei ist, daß bei jeder Berechnung natürlich ein anderes Array genommen wird, und ich nicht weiß wie ich das in einer Methode implementiere.

thxalot
Markus

crash1980
14-05-2004, 14:34
OK, ich glaub ich hab dafür nen Lösungsansatz:
Anstelle der 8 Arrays habe ich ein mehrdimensionales Array[8][3] verwendet. Könnt ihr mir sagen, ob ich immer 3 Werte gleichzeitig übergeben kann, oder jede Position einzeln durchführen muss. Zweiteres wäre erst wieder keine Arbeitsersparnis :(

InspectorGadjet
14-05-2004, 15:36
kann mir jemand referenzdaten zu folgenden zahlen geben...

73 73 85
meine: 0,201 0,187 0,075 0,105 0,187 0,171 0,075 0
eprog-source: 0 0,073 0,188 0,173 0,073 0,104 0,188 0,202

ich runde zuerst und dann vergleiche ich... 73 73 85 liegt genau in einem eckpunkt...
die programme beim eprog-source vergleichen zuerst und runden dann...

gelbasack
14-05-2004, 21:51
Ja, das Problem hatte ich auch.
Was bei mir zur Lösung führte: NUR für die Grenzen short verwenden als Typ, die werden gerundet, dann wird berechnet, in welchem Quader die Farbwerte liegen, alles weiter muss aber mit ungerundeten Float's geschehen, erst GANZ am Ende vor der Ausgabe runden.
Wenn es dir weiterhilft, hatte das selbe Bsp, Source über PM oder Mail, falls hilfreich...