[Java] HSBtoRGB avec teinte proche de zéro
Résolu/Fermé
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
-
27 avril 2012 à 00:01
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 27 nov. 2012 à 21:53
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 27 nov. 2012 à 21:53
A voir également:
- [Java] HSBtoRGB avec teinte proche de zéro
- Remettre a zero un pc - Guide
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel football - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Télécharger jeux java gameloft gratuit - Forum Mobile
1 réponse
bizu53
Messages postés
1274
Date d'inscription
samedi 30 août 2008
Statut
Membre
Dernière intervention
21 juin 2015
860
Modifié par bizu53 le 27/11/2012 à 21:06
Modifié par bizu53 le 27/11/2012 à 21:06
(edit:petit déterrage, peut-être plus d'actualité, mais au moins cette question ne reste pas sans réponse)
Mieux qu'une idée : la réponse (ou alors je n'ai pas observé le problème et je demande un autre cas).
J'ai bien en sortie :
Mieux qu'une idée : la réponse (ou alors je n'ai pas observé le problème et je demande un autre cas).
System.out.println(Integer.toHexString(Color.HSBtoRGB(-1e-8f, 1f, 1f))); // teinte hors plage [0;1], négative donc ramenée à 0 => couleur attendue : noir System.out.println(Integer.toHexString(Color.HSBtoRGB(0, 1f, 1f))); // teinte 0 => couleur attendue : rouge System.out.println(Integer.toHexString(Color.HSBtoRGB(1e-8f, 1f, 1f))); // teinte proche de 0 => couleur attendue : rouge
J'ai bien en sortie :
ff000000 ffff0000 ffff0000
27 nov. 2012 à 21:15
public static int HSBtoRGB(float hue, float saturation, float brightness)
The saturation and brightness components should be floating-point values between zero and one (numbers in the range 0.0-1.0). The hue component can be any floating-point number. The floor of this number is subtracted from it to create a fraction between 0 and 1. This fractional number is then multiplied by 360 to produce the hue angle in the HSB color model.
Modifié par bizu53 le 27/11/2012 à 21:39
Je viens de confirmer que c'est bien une histoire de précision (avec une boucle for de -0.000_01 à 0.000_01 avec un pas de 0.000_000_01)
En copiant le code de Color.HSBtoRGB pour utiliser des double au lieu de float : là où celle utilisant les float me sort du noir, celle utilisant les double sort bien du rouge.
La variable h est en cause dans l'implémentation de Color.HSBtoRGB.
27 nov. 2012 à 21:53
J'avait un tableau pour faire une palette de couleurs, pour contourner le problème j'ai rajouté une case à la fin, de manière à ce que 0 et 1 renvoient la même couleur. Ce qui se passe c'est que la fraction des teintes est entre [0-1] alors qu'en général les intervalles sont [0-1[ donc le 1 vaut 0 mais pas là...
Bref, je mets en résolu ;-)