Einzelnen Beitrag anzeigen

Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#7

AW: Farbexperten: Farbwerte für Segmentierung finden

  Alt 7. Apr 2012, 23:13
Mein Vorschlag: Logik von Darstellung trennen (originell, ich weiß).

Statt den „Wert“ der Straße direkt als Farbe zu speichern, speicherst du ihn als Wert zwischen 0.0 und 1.0 (über Gleitkommazahlen oder über einen entsprechend skalierten Integer, wie auch immer). Am Ende multiplizierst du einfach die Maximalfarbe mit dem Wert. Dadurch reduzierst du außerdem Rundungsfehler.

Beispiel:
FarbeMaximal = RGB($FF, $00, $00) (100% rot)

Wert = 0.0
-> Farbe = RGB($FF*0.0, $00*0.0, $00*0.0) = RGB($00, $00, $00); (schwarz)

Wert = 0.5
-> Farbe = RGB($FF*0.5, $00*0.5, $00*0.5) = RGB($7F, $00, $00); (dunkelrot)

Wert = 1.0
-> Farbe = RGB($FF*1.0, $00*1.0, $00*1.0) = RGB($FF, $00, $00); (100% rot)

Je nachdem, wie das Mapping verlaufen soll, kannst du den Wert auch vorher potenzieren (Stichwort Gamma). Also z.B. Wert = Power(Wert, 2.2); für einen Gammawert von 2.2.

Natürlich kannst du auch, wie schon vorgeschlagen, ein anderes Farbmodell wie HSV statt RGB verwenden, aber imo ist das für diesen Zweck unnötig kompliziert.
  Mit Zitat antworten Zitat