Ich habe heute im Rahmen der Erstellung eines neuen LBS sowohl die Funktionen convertRGBtoHSV() und convertHSVtoRGB() als auch die LBS RGB->HSV und HSV->RGB benutzt. Irgendwie habe ich immer inkonsistente Ergebnisse bekommen, die ich auch nicht mit Umrechnern im Internet übereinbringen konnte. Die beiden Funktionen liefern die korrekten Ergebnisse.
Ich habe dann mal in die beiden LBS Bausteine reingeschaut und vermute, dass die Ausgänge falsch gesetzt werden. Wenn ich es richtig verstanden habe, soll die Ausgabe ein HEX String sein, d.h. sowohl RGB als auch HSV jeweils im Wertebereich 00-FF liegen.
Im Moment wird der Ausgang (Hier das Beispiel LBS RGB->HSV) wie folgt berechnet:
Wenn ich es nun wie folgt ändere:
dann erhalte ich genau die HSV Werte, den ich auch in diesem Rechner nachvollziehen kann.
Habe allerdings die Berechnung
gerade noch mal in einem separaten php-Skript getestet und eigentlich funktioniert es, nur im LBS nicht.
Habe es dann noch mal als Mini Logik nachgestellt:
2016-03-25 21_12_39-EDOMI · Administration.png
HSV->RGB mit #aabbcc danach RGB->HSV. Eigentlich müsste doch wieder #aabbcc herauskommen, oder?
Wenn ich in beiden LBS den Ausgang in der von mir modifizierten Weise setze, dann funktioniert es wie erwartet:
2016-03-25 21_18_19-EDOMI · Administration.png
Ich will nicht ausschließen, dass ich etwas grundsätzlich falsch verstanden haben, aber ich kann es nicht selbst auflösen.
Christian, kannst du mir helfen?
VG
André
Ich habe dann mal in die beiden LBS Bausteine reingeschaut und vermute, dass die Ausgänge falsch gesetzt werden. Wenn ich es richtig verstanden habe, soll die Ausgabe ein HEX String sein, d.h. sowohl RGB als auch HSV jeweils im Wertebereich 00-FF liegen.
Im Moment wird der Ausgang (Hier das Beispiel LBS RGB->HSV) wie folgt berechnet:
PHP-Code:
$hsv=convertRGBtoHSV($r,$g,$b);
if ($hsv!==false) {
$hsvhex=($hsv[0]*256*256) + ($hsv[1]*256) + $hsv[2];
setLogicLinkAusgang($id,1,sprintf("%06X",$hsvhex));
PHP-Code:
$hsv=convertRGBtoHSV($r,$g,$b);
if ($hsv!==false) {
setLogicLinkAusgang($id,1,dechex($hsv[0]).dechex($hsv[1]).dechex($hsv[2]));
Habe allerdings die Berechnung
PHP-Code:
$hsvhex=($hsv[0]*256*256) + ($hsv[1]*256) + $hsv[2];
setLogicLinkAusgang($id,1,sprintf("%06X",$hsvhex));
Habe es dann noch mal als Mini Logik nachgestellt:
2016-03-25 21_12_39-EDOMI · Administration.png
HSV->RGB mit #aabbcc danach RGB->HSV. Eigentlich müsste doch wieder #aabbcc herauskommen, oder?
Wenn ich in beiden LBS den Ausgang in der von mir modifizierten Weise setze, dann funktioniert es wie erwartet:
2016-03-25 21_18_19-EDOMI · Administration.png
Ich will nicht ausschließen, dass ich etwas grundsätzlich falsch verstanden haben, aber ich kann es nicht selbst auflösen.
Christian, kannst du mir helfen?

VG
André
Kommentar