Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   RGB to Float3 (https://www.delphipraxis.net/175154-rgb-float3.html)

EWeiss 3. Jun 2013 05:48

RGB to Float3
 
Wie kann ich RGB Werte nach float3 umrechnen?

Denke mal das RGB(255,255,255) := Float3(1.0, 1.0, 1.0) entspricht.
Nur wie berechne ich das finde außer in C++ keine infos darüber.

Delphi-Quellcode:
List.Add('Redwood'     + ',' + '171, 78, 82');


Diese 3 Werte möchte ich dann als float3 übergeben.

gruss

Sir Rufo 3. Jun 2013 05:53

AW: RGB to Float3
 
Mit Prozentrechnung ;)

255/255 (= 100%) = 1.0

EWeiss 3. Jun 2013 05:53

AW: RGB to Float3
 
Zitat:

Zitat von Sir Rufo (Beitrag 1217294)
Mit Prozentrechnung ;)

255/255 (= 100%) = 1.0

Sample?

Versteh das jetzt nicht! :oops:

gruss

Sir Rufo 3. Jun 2013 05:57

AW: RGB to Float3
 
RGB(171,78,82) => Float3( 171/255, 78/255, 82/255 )

EWeiss 3. Jun 2013 05:59

AW: RGB to Float3
 
Zitat:

Zitat von Sir Rufo (Beitrag 1217296)
RGB(171,78,82) => Float3( 171/255, 78/255, 82/255 )

JO aber gibt es Float3 in Delphi?
Goggle hat mir da keine Ergebnisse geliefert.

Vielleicht war meine Frage etwas unzulänglich.
Danke!

gruss

Sir Rufo 3. Jun 2013 06:07

AW: RGB to Float3
 
axo :) aber das wäre doch lediglich ein record mit ein paar class operatoren.
Direkt gesehen habe ich das noch nicht, sollte aber fix gebaut sein ...

EWeiss 3. Jun 2013 06:18

AW: RGB to Float3
 
Irgendwie will der kram wieder nicht.
Double sollte eigentlich einen wert 0.111111 liefern können

fr := StrToInt(tmpStr[1]) / 255;

fr := 0;

Scheint so das ich heute was an der Klatsche habe ;)

List.Add('Raw umber' + ',' + '146, 102, 68');
sollte dem wert
float3(1.30, 1.02, 0.68) entsprechen da komme ich aber mit Extended(Double) nicht dran.

Mit meinem Rechner
146/255 := 0.5725490196

Komme nicht auf den wert 1.30

EDIT:
Hmmm
Denke das geht nicht so einfach

Code:
float4 SepiaPass( float4 colorInput, float2 tex )
{
   float4 sepia = colorInput;
   // Calculating amounts of input, grey and sepia colors to blend and combine
   float grey = dot(sepia.rgb, float4(0.3, 0.59, 0.11, 0));
   sepia.rgb = float4(sepia.rgb * ColorTone , 1);
   float4 grey2 = grey * (GreyPower);
   float4 color2 = colorInput / (GreyPower + 1);
   float4 blend2 = grey2 + color2;
   sepia.rgb = lerp(blend2, sepia.rgb, SepiaPower);
   // returning the final color
   return sepia;
}
Da spielen andere Faktoren noch eine rolle.
Hardcoden ist schlecht möchte ich eigentlich nicht so gerne.


gruss

Sir Rufo 3. Jun 2013 06:36

AW: RGB to Float3
 
Ist ja irgendwie auch logisch, denn bei der Berechnung

Code:
y = x / 255
gilt
Code:
x < 255 => y < 1
x = 255 => y = 1
x > 255 => y > 1
Somit passt irgendwas mit der Berechnung nicht und auch die Annahme
Code:
RGB(255,255,255) = Float3(1.0,1.0,1.0)
muss somit falsch sein

bzw. die implizierte Herleitung, dass
Code:
RGB(0,0,0) = Float3(0.0,0.0,0.0)

Sir Rufo 3. Jun 2013 06:43

AW: RGB to Float3
 
Zitat:

Zitat von EWeiss (Beitrag 1217299)
Hmmm
Denke das geht nicht so einfach

Code:
float4 SepiaPass( float4 colorInput, float2 tex )
{
   float4 sepia = colorInput;
   // Calculating amounts of input, grey and sepia colors to blend and combine
   float grey = dot(sepia.rgb, float4(0.3, 0.59, 0.11, 0));
   sepia.rgb = float4(sepia.rgb * ColorTone , 1);
   float4 grey2 = grey * (GreyPower);
   float4 color2 = colorInput / (GreyPower + 1);
   float4 blend2 = grey2 + color2;
   sepia.rgb = lerp(blend2, sepia.rgb, SepiaPower);
   // returning the final color
   return sepia;
}
Da spielen andere Faktoren noch eine rolle.
Hardcoden ist schlecht möchte ich eigentlich nicht so gerne.


gruss

Ah, jetzt habe ich das auch verstanden :)

Da wird zunächst der Helligkeitswert der Farbe bestimmt.
Delphi-Quellcode:
Rot 30%
Grün 59%
Blau 11%
Das musst du aber hardcoden, denn dass entspricht den (von unseren Augen) wahrgenommenen Helligkeitswerten der Farben.

EWeiss 3. Jun 2013 06:49

AW: RGB to Float3
 
Zitat:

Das musst du aber hardcoden, denn dass entspricht den (von unseren Augen) wahrgenommenen Helligkeitswerten der Farben.
Ich meinte mit Hardcoden das ich die werte die für die
verwendeten Farben (Die bekannt sind) Wiki(Shades of brown) direkt in meinem Array ablege.

Und das wollte ich vermeiden ;) über die korrekte berechnung.

gruss


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:22 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz