Forum: Mikrocontroller und Digitale Elektronik Festkommarechnung


von Stefan (Gast)


Lesenswert?

Hallo,

ich habe folgende drei Gleichungen:

I. p = v * (1 - s)
II. q = v * (1 - s * f)
III. t = v * (1 - s * (1 - f))

Alle Variablen bewegen sich dabei zwischen 0 und 1 (es geht um eine 
Umrechnung vom HSV ins RGB Farbmodell). Nun möchte ich alles ohne 
Fließkommarechnung machen, wobei sich v und s zwischen 0 und 255, f 
zwischen 0 und 42 bewegt. p, q, t sollen ebenfalls zwischen 0 und 255 
liegen.

Die erste Gleichung müsste dann wohl heißen:

p = (v * (255 - s)) / 256

Aber wie geht dass wenn ich unterschiedliche Skalierungen (f und s) 
innerhalb der Gleichung habe?

Stefan

von Pandur S. (jetztnicht)


Lesenswert?

Alles  mit 2^16 (65536) multiplizieren und mit 32 bit rechnen.

von derguteweka (Gast)


Lesenswert?

Moin,

Mach dir ein neues f' z.B. und das ist das alte f mal 6, also:

f'=f*6

das neue f' ist dann im Bereich 0..252 und passt so einigermassen zu 
deinen anderen 8 bit Festkommazahlen.

Gruss
WK

von Stefan (Gast)


Lesenswert?

Ahh, und dann entsprechend:

II. q = v * (65535 - s * f') / 65536

?

von Pandur S. (jetztnicht)


Lesenswert?

Man muss sich einfach vorstellen, dass man bei einer Multiplikation mit 
2^16 (= zwei Byte mit Nullen rechts anfuegen), 16 binaere 
(fest-)Kommastellen angefuegt hat.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.