Simulation LED tricolore (RGB)

Résolu
Nei_Mad Messages postés 2 Date d'inscription dimanche 5 juin 2005 Statut Membre Dernière intervention 22 juillet 2007 - 21 juil. 2007 à 17:34
Nei_Mad Messages postés 2 Date d'inscription dimanche 5 juin 2005 Statut Membre Dernière intervention 22 juillet 2007 - 22 juil. 2007 à 00:10
Bonjour.
Je suis actuellement en train de développer un logiciel et j'ai besoin qu'il puisse simuler l'allumage d'une LED tricolor (en fait 3 LEDs : une rouge, une verte et une bleue). Pour cela, je cherche à coder une fonction qui a pour paramètres :

en entrée :
- taux d'allumage de la led rouge (8 bits)
- taux d'allumage de la led verte (8 bits)
- taux d'allumage de la led bleue (8 bits)

sortie : la couleur 32 bits crée par la LED (c a d la couleur + la composante de transparence)

J ai bien évidemment imaginé "copier coller" les 3 niveaux d'entrée dans la couleur de sortie mais je me suis vite rendu compte que ca ne marcherait pas.
Exemple
Si les 3 canaux sont allumés à 100%, on obtient en pratique du blanc (éblouissant, au passage). Si on copie-colle les niveaux dans la couleur (R:255, V:255, B:255), on obtient du blanc... OK
Si les 3 canaux sont allumés à 50%, on obtient en pratique du blanc, moins lumineux que pour le cas précédent. Par contre, si on copie colle les niveaux dans la couleur (R:127, V:127, B:127), on n'obtient plus du blanc mais du gris. Le but de la fonction que je cherche à coder serait de donner la couleur (ici : blanc) et la transparence (ici, 50% a peu pres), or je ne vois pas du tout comment effectuer la conversion.

Merci de votre aide.

2 réponses

cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
21 juil. 2007 à 23:41
Voici quelque chose qui devrait marcher pour le blanc, je sais pas ce que ca donnera pour le reste :

entrée tr, tg ,tb;
k=255/max(tr,tg,tb)
sortie red=tr*k, green=tg*k, blue=tb*k, alpha=255-k

attention k flottant donc faire les conversions int-float nécessaires
3
Nei_Mad Messages postés 2 Date d'inscription dimanche 5 juin 2005 Statut Membre Dernière intervention 22 juillet 2007 1
22 juil. 2007 à 00:10
Bonsoir
Je viens de faire des tests de cet algo pour mon application : le rendu des couleurs correspond parfaitement à ce dont j ai besoin. Par contre, j'ai du retoucher le canal alpha :
j'ai remplacé par
alpha=max(tr,tg,tb)
et c est nickel.

Un grand merci !
1
Rejoignez-nous