PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Rechner kann nicht mehr rechnen



axeljaeger
10-11-2002, 11:28
Ich hab eine Funktion zum Umrechnen von HSV in RGB-Farben aus einer Internetquelle abgeschrieben.
Leider funktioniert die Funktion nicht wie sie sollte, es kommt, egal was man an Werten übergibt,
immer ein Schneeweis und nicht etwa Himmelblau bei glHSVColor4f(180.0f, 1.0f, 1.0f, 1.0f) raus.
Der Computer scheint den Inhalt von s im Laufe der Methode zu vergessen, siehe dazu Kommentare im Quelltext



void Visual::glHSVColor4f(float h, float s, float v, float a)
{
// Hier ist s noch 1.0
float r, g, b;

float f,p,q,t;
int k;

if(s = 0.0)
{
r = g = b = v; // Achromatic case (Schwarz-Weiß)
}
else
{
if (h == 360.0)
h = 0.0;
h = h / 60.0;
k = (int)h;
f = h - (float)k;

// Hier ist s 0 und nicht 0.0, wie es sich für einen float gehört,
// wenn man über iostream ausgibt

p = v * (1.0 - s); // s = 0, also ist p = 1.0
q = v * (1.0 - (s * f)); // s * f = 0, also ist q = 1.0f;
t = v * (1.0 - (s * (1.0 - f))); // t ist auch 1

switch(k) {
case 0: r = v; g = t, b = p; break;
case 1: r = q; g = v; b = p; break;
case 2: r = p; g = v; b = t; break;
case 3: r = p; g = q; b = v; break;
case 4: r = t; g = p; b = v; break;
case 5: r = v; g = p; b = q; break;
}
}
glColor4f(r,g,b,a);
}

anda_skoa
10-11-2002, 11:33
Du hast hier eine Zuweisung statt einem Vergleich:



if(s = 0.0) // <-- hier
{
r = g = b = v; // Achromatic case (Schwarz-Weiß)
}


Ciao,
_

axeljaeger
10-11-2002, 12:28
Den hätte ich ohne dich nie gefunden! Danke!

nobody0
10-11-2002, 18:58
Der gcc meldet sowas wenn man die Option -Wall verwendet ;)

axeljaeger
10-11-2002, 19:40
was sagt er denn dann?

micha
10-11-2002, 20:42
Hi,

ungefähr das : warning: suggest parentheses around assignment used as truth
value

Gruß micha

nobody0
10-11-2002, 20:50
blub.c: In function Main':
blub.c:33: invalid lvalue in assignment

Jeder gute Compiler macht sowas; Fehler solcher Art gehören schon lange der Vergangenheit an (solange man keinen veralteten Compiler benutzt) ;)