− En abscisse, on passe du rouge au vert, puis au bleu, puis au rouge.
− En ordonnée, on passe du noir au blanc.
Donc il y a deux choses à calculer :
− Le poids de chaque couleur. Par exemple (0.2 ; 0.3 ; 0.5). Ça dépend de l'abscisse.
− La valeur multiplicative à appliquer aux poids. Tout en haut (ordonnée minimale), on multiplie les poids par 0 ; tout en bas (ordonnée maximale), on multiplie les poids par 255. Exemple : si je suis à mi-chemin, les poids ci-dessus vont donner (51, 77, 128).
Puisque tu as un carré de 256×256 (tu as écrit 255 parce que ça va de 0 à 255, c'est ça ?), la valeur est simple : Valeur = Y. Reste à calculer les poids.
Je ne suis pas sûr du tout, mais il me semble que ça ressemble à ça (j'ai d'abord fait un dessin avant de faire les calculs) :
− Je note TX la taille totale en abscisse (ici 256) et X = abscisse / TX (par exemple si l'abscisse est 75, X = 75/256). Dans la suite, R, V, B désignent les poids entre 0 et 1.
− Si X est compris entre 0 et 1/3 : R = 1 - 3X ; V = 3X ; B = 0.
− Si X est compris entre 1/3 et 2/3 : R = 0 ; V = 2 - 3X ; B = -1 + 3X.
− Si X est compris entre 2/3 et 1 : R = -2 + 3X, V = 0 ; B = 3 - 3X.
Exemple : le point central a pour coordonnées (128, 128). D'où :
− Y = 128 donc Valeur = 128.
− X = 128/256 = 0.5, donc R = 0 ; V = 2 - 3×0.5 = 0.5 ; B = -1 + 3×0.5 = 0.5.
− D'où Rouge = 0×Valeur = 0 ; Vert = 0.5×128 = 64 ; Bleu = 0.5×128 = 64. Ça donne du bleu-vert, et c'est bien ce qu'on obtient sur la page. Si on remonte verticalement (les ordonnées diminuent) on a toujours du bleu-vert, mais de plus en plus foncé (car Valeur tend vers 0). Si on descend verticalement (les ordonnées augmentent) on a toujours du bleu-vert, mais de plus en plus clair (car Valeur tend vers 255).
(J'espère que je n'ai pas fait ton travail à ta place. Je trouvais le problème drôlement intéressant du coup je me suis peut-être un peu trop emballé...)
J'ai donc l'impression qu'il y a des valeurs en dur et que ce ne sera pas si évident de faire exactement pareil.
Mais si tu veux faire quelque chose de correct, il doit y avoir moyen. Mais il faut réussir à faire une sorte de surjection entre des coordonnées 2D, et des coordonnées 3D (l'espace des couleurs, c'est un cube de 256 de coté)
Merci robun et Fvirtman vos réponses m'ont permis de bien comprendre ce que je devais faire pour résoudre mon problème.
Je reviens vers vous dès que je l'ai fait !
EDIT: Alors je viens juste de faire ta méthode robun. Cependant, il manque le blanc. Sinon on a quand même plus de couleurs que m'a méthode merci
- Edité par TheoCerutti 16 février 2019 à 14:35:20
Faire un genre de gradient de couleur (CSFML)
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Recueil de code C et C++ http://fvirtman.free.fr/recueil/index.html