Farb Indexes

Übersicht Sonstiges Smalltalk

Neue Antwort erstellen

Lunatix

Betreff: Farb Indexes

BeitragSo, Mai 01, 2011 17:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey Leute.

Ich hab grad in meinem Programm eine Colorpicking Routine erstellt.

D.h., ich zeichne meine "Objekte" in je einer Farbe, picke hinterher die Farbe am Mauszeiger nd Vergleiche dann, welches Objekt die Farbe hatte.

Code: [AUSKLAPPEN]
unsigned int r=0;
unsigned int g=0;
unsigned int b=0;

while(...){
  r++;
  if (r>255){
    r=0;
    g++;
    if (g>255){
      g=0;
      b++;
  }
  unsigned int nColorIndex = (r+1)*(g+1)*(b+1);
}


Nun stellt sich mir die Frage: ist "nColorIndex" immer anders? Oder habe ich einen Denkfehler drin, und nColorIndex könnte an einer bestimmten Stelle einen Wert beinhalten, der schon einmal vorhanden war?

255*1*255 = 255*255*1 -> könnte ein solcher Wert erscheinen? Ich bin mir grad etwas unsicher, jedoch würde ich auf Nein tippen. Leider kann man das nicht berechnen, oder doch, aber dies würde selbst mit meinem 4 Kern + 4 Kerne (Virtuell, (Hyperthreading) = 8 gleichzeitige Threads) Laptop, Tage dauern.... 255*255*255 sind schl. 16 Mio Farben, und für jede die 16 Mio durchgehen... Unmöglich (für mich).

Deshalb: Was "glaubt" ihr? Hier sind sicherlich Mathematik-Genies, die mir dir Frage benatworten können =)
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen...

ToeB

BeitragSo, Mai 01, 2011 18:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich würde sie ja Addieren, etwa so :
Code: [AUSKLAPPEN]
index = (r*255*255)+(g*255)+b



mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

Lunatix

BeitragSo, Mai 01, 2011 18:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey, super! Funktioniert einwandfrei =)
Vielen Dank!
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen...

mpmxyz

BeitragSo, Mai 01, 2011 18:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Damit es keine Fehler bei mehr als 255 Objekten gibt: Die Faktoren müssen 256 sein!
->
Code: [AUSKLAPPEN]
index = (r*256*256)+(g*256)+b

Ansonsten wären (0,0,255) und (0,1,0) gleich. (R,G,B)
mfG
mpmxyz
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer

Noobody

BeitragSo, Mai 01, 2011 18:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn man eh schon die RGB-Werte zu einem Int zusammenfügt, geht es auch so: Code: [AUSKLAPPEN]
unsigned int nColorIndex = (r << 16) | (g << 8) | b;
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun

Lunatix

BeitragSo, Mai 01, 2011 23:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Jau, klar Wink Mir gings jedoch nur ums Prinzip, das war so Verständlicher =)
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen...

Neue Antwort erstellen


Übersicht Sonstiges Smalltalk

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group