Forum: Mikrocontroller und Digitale Elektronik Berechnung Rainbow C


von Simon (Gast)


Lesenswert?

Hallo,

ich versuche gerade einen Regenbogeneffekt mit HSV darzustellen.

hue: 0 - 359°
sat: 100%
val: 100%

Der Effekt soll abgelenkt werden von der Weite. Sprich, es soll nicht 
der volle Farbraum (0-359°) ausgegen werden, wenn die Weite > Anzahl der 
Leds entspricht.
1
for(int16_t led = 0; led < numLeds; led++)
2
{
3
hue = ((360 * led / width) + shift) % 360; // Rückgabe 0 - 359
4
}

Ist die Berechnung so korrekt?

Oder aber

hue = (((360 / width) * led) + shift) % 360;

von Tom E. (Gast)


Lesenswert?

Simon schrieb:
> ich versuche gerade einen Regenbogeneffekt mit HSV darzustellen.
>
> hue: 0 - 359°

Wenn du einen Regenbogeneffekt erzeugen möchtest, solltest du den 
Bereich zwischen Rot und Blau (Purpurlinie in der CIE Normtafel) weg 
lassen. Die Farben gibt es im Regenbogen nicht.
https://de.wikipedia.org/wiki/CIE-Normvalenzsystem#Die_Normfarbtafel

von Tom E. (Gast)


Lesenswert?

Simon schrieb:
> hue = ((360 * led / width) + shift) % 360; // Rückgabe 0 - 359

> Oder aber

> hue = (((360 / width) * led) + shift) % 360;

Mathematisch betrachtet, besteht kein Unterschied. Falls du das als 
Ganzzahlrechnung implementieren möchtest, kannst du dir selbst 
überlegen, wie der Wertebereich für (360 / width) und die resultierenden 
Werte für hue aussehen. Sonst nimm ein Tabellenkalkulationsprogramm 
und probier es aus.

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.