Retrouver une couleur...

Olympiades mathématiques, énigmes et défis
apidou
Messages: 2
Enregistré le: 19 Mar 2010, 21:36

retrouver une couleur...

par apidou » 20 Mar 2010, 09:00

Bonjour,

Je développe une petite application informatique et j'ai un problème de math.
Comme je suis pas bien bon je galère...

J'ai une couleur codée de cette façon :
color = (red * 65536) + (green * 256) + blue

ex: 16776960 pour jaune

J'aimerai retrouver les 3 inconnues red green et blue (<=256) (couleur RGB)

Comment faire ?

J'ai trouvé une solution mais qui apparemment, elle n'est pas bonne car des fois ce n'est pas la bonne couleur.
Red = colour mod 256
Green = (((colour - Red)mod 65536) \ 256 )
Blue = ( colour - (colour mod 65536)) \ 65536

l'opérateur modulo donne le reste de la division entière entre 2 nombres.
ex: 5%2=1

Si quelqu'un peut m'éclairer car pour l'instant je ne comprends pas la logique mathématique pour retrouver le première couleur ....



Avatar de l’utilisateur
fatal_error
Modérateur
Messages: 6610
Enregistré le: 22 Nov 2007, 13:00

par fatal_error » 20 Mar 2010, 09:24

salut,

color = (red * 65536) + (green * 256) + blue

prenons n la valeur de color.
n/65536 = R
(n-R*65536)/256 = G
(n-R*65536-G*256)=B

avec la division qui te donne la partie entiere style 5/2 = 2
Ex : le jaune te donne ici
R = 16776960/65536 = 255
G = (n-R*65536)/256 = (16776960 - 255*65536)/256 = 255
B = (n-R*65536-G*256) = (16776960 - 255*65536 - 255*256) = 0
la vie est une fête :)

Avatar de l’utilisateur
fatal_error
Modérateur
Messages: 6610
Enregistré le: 22 Nov 2007, 13:00

par fatal_error » 20 Mar 2010, 09:46

Une autre méthode :
tu comptes en base 256, (65536 = 256^2)
une manière pe plus simple, c'est de convertir ton nombre en binaire (par exemple tout entier est un binaire...), pis de prendre des groupes de bits de 8 bits. Donc tu pars de la droite, et tu fais des groupes de 8 bits (et eventuellement le troisieme groupe contient un peu moins de 8 bits (tu le completes avec des zeros sur la gauche).
Tu obtiens trois groupes de bits, le premier en partant de la droite te donne B, le second G et le dernier R.
exemple :
16776960_(10)=111111111111111100000000
le premier groupe donne : 00000000
le second : 11111111
le dernier : 11111111
le premier en decimal donne 0
le second 255
et le dernier 255
la vie est une fête :)

apidou
Messages: 2
Enregistré le: 19 Mar 2010, 21:36

par apidou » 20 Mar 2010, 10:17

Un grand merci pour ces 2 solutions claires et détaillées.

Je viens de tester et cela fonctionne sans soucis !

Avatar de l’utilisateur
leanj
Membre Naturel
Messages: 57
Enregistré le: 29 Déc 2012, 20:59

Re: retrouver une couleur...

par leanj » 12 Oct 2023, 07:39

:ugeek: il manque une parenthèse . tu programmes avec Mathlab ?

 

Retourner vers ⚔ Défis et énigmes

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 14 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite