Couleurs équidistantes

Résolu
cs_jacques13
Messages postés
252
Date d'inscription
mardi 3 juin 2003
Statut
Membre
Dernière intervention
29 juin 2013
- 23 janv. 2008 à 19:09
cs_jacques13
Messages postés
252
Date d'inscription
mardi 3 juin 2003
Statut
Membre
Dernière intervention
29 juin 2013
- 25 janv. 2008 à 19:00
Bonjour,
J'aimerais confectionner quelque chose qui ressemblerait à un cartouche de carte thématique avec 15 rectangles alignés et colorés dans quinze couleurs différentes et bien discernables. J'avais pensé aux couleurs du spectre de la lumière visible, mais j'ai du mal à faire une partition discrète en 15 couleurs (équidistantes, si je puis dire) définies  soit par RGB soit par un entier long.
Quelqu'un aurait il déjà été confronté à ce problème?
Jacques13

5 réponses

bigfish_le vrai
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
12
23 janv. 2008 à 21:48
Salut,

en VBA cela donne quelque chose comme ca :

Sub couleurs()
Dim i As Long, rouge As Long, vert As Long, bleu As Long, n As Long, compteur As Long
Dim NbCouleur As Long
rouge = 255
vert = 0
bleu = 0
compteur = 1
NbCouleur = 3 'par couleur primaire
For i = 1 To 5
    For n = 0 To NbCouleur - 1
        Select Case i
        Case 1 'du rouge au jaune
            vert = (255 / NbCouleur) * n
        Case 2 'du jaune au vert
            vert = 255
            rouge = 255 - ((255 / NbCouleur) * n)
        Case 3 ' du vert au cyan
            rouge = 0
            bleu = (255 / NbCouleur) * n
        Case 4 'du cyan au bleu
            bleu = 255
            vert = 255 - ((255 / NbCouleur) * n)
        Case 5 'du bleu au magenta
            vert = 0
            rouge = (255 / NbCouleur) * n
        End Select
    ActiveWorkbook.Colors(compteur) = RGB(rouge, vert, bleu) 'specifique a excel tu n'en auras pas besoin mais sache que la limite d'un classeur excel est de 56 couleurs
    Cells(compteur, 1).Interior.Color = ActiveWorkbook.Colors(compteur)
    compteur = compteur + 1
    Next n
Next i
End Sub

ce code donne un degradé de couleurs du Rouge au Magenta sur la colonne A. il ne te reste plus qu'a le traduire en VB6, evidemment si c'est bien ce que tu cherchais

A+
3
jmfmarques
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
23 janv. 2008 à 19:21
Bonjour,

J'ai du mal à comprendre la signification que tu donnes à équidistance en matière de couleurs ...

Même avec ma palette de peintre, je n'y parviendrais pas sans autres explications très précises sur ce que tu appelles equidistance.
0
cs_jacques13
Messages postés
252
Date d'inscription
mardi 3 juin 2003
Statut
Membre
Dernière intervention
29 juin 2013

23 janv. 2008 à 22:15
Pour moi, équidistance signifie écarts de densité de couleur équivalents entre chaque case.
Le mot est probablement maladroit!
En tout cas, bravo à Bigfish qui me propose une solution presque parfaite!
Je dis presque car l'écart de densité entre les cases 6 & 7 et 12 & 14 est nul, en d'autre termes la couleur est la même.
Encore merci.
Jacques13
0
bigfish_le vrai
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
12
25 janv. 2008 à 00:42
Bonjour,
je n'est pas la meme perception que toi sur l'ecart des densités. De mon cote la difficulté est de percevoir la difference entre les couleurs 6,7 et 8. Je pense que cela est du d'une part à ma propre perception des couleurs et d'autre part au rendu de mon materiel, c'est a dire carte graphique, ecran etc. Pour pallier à ce probleme j'ai juste rajouté une ligne apres le Case 3 comme ceci :

Case 3
      vert = 199 + (n * 28)
       rouge = 0
        bleu = (255 / NbCouleur) * n

De fait on ne peu plus mathematiquement parler d'équidistance mais peut etre d'équidistance visuel

Je suis (grandement) interessé par la solution que tu as trouvé pour resoudre ce probleme d'ecart de "densité visuel"

A+

P.S. n'etant pas tres fort en orthographe, j'ai du checher sur le net la bonne orthographe pour le mot "Pallier" et j'ai trouvé cette jolie phrase :
Il partait dans la vie les mains vides, et méprisait les biens qui
s'acquièrent. Pour pallier cette indigence, il ne lui restait qu'une issue:
paraître (BEAUVOIR,Mém. j. fille, 1958, p.36):
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_jacques13
Messages postés
252
Date d'inscription
mardi 3 juin 2003
Statut
Membre
Dernière intervention
29 juin 2013

25 janv. 2008 à 19:00
La solution que j'ai trouvée, en m'inspirant de ta proposition, c'est de créer des intervalles parfaitement égaux de 0 à 255 pour le bleu, de 255 à 0 pour le rouge et de 0 à 0 (en passant par 255 pour la valeur médiane) pour le vert (cf tableau ci-dessous):



R

,

G

,

B

,

----

255

,

0

,

0

,

----

237

,

36

,

18

,

----

219

,

73

,

36

,

----

200

,

109

,

55

,

----

182

,

146

,

73

,

----

164

,

182

,

91

,

----

146

,

219

,

109

,

----

127

,

255

,

127

,

----

109

,

219

,

146

,

----

91

,

182

,

164

,

----

73

,

146

,

182

,

----

55

,

109

,

200

,

----

36

,

73

,

219

,

----

18

,

36

,

237

,

----

0

,

0

,

255


Essaye ces valeurs et tu verras que l'"équidistance" des couleurs est parfaitement respectée.


Encore merci pour m'avoir débloqué!


Ta solution était mieux qu'un palliatif!


Jacques13
0