Gagnéposhu a écrit :Au risque d'être encore ignoré...

Gagnéposhu a écrit :Au risque d'être encore ignoré...
Il ne me semble pas que ce soit le genre de Dobro de se fâcher parce qu'il y a une meilleur solution proposée (en fait, il ne me semble pas que ce soit le cas de qui que ce soit, puisque ça serait très contreproductif).Lord Nelson a écrit :Oui ton code est mieux pour le TSL vers RGB mais chuuuuuuut le dit pas à Dobro qui a passé des heurs à chercher sur internet la solution, il pourrais se fâcher...
Je plaisantaisIl ne me semble pas que ce soit le genre de Dobro de se fâcher parce qu'il y a une meilleur solution proposée (en fait, il ne me semble pas que ce soit le cas de qui que ce soit, puisque ça serait très contreproductif).
Pour le coup, l'erreur à été de chercher sur le net plutôt que de poser les équations sur papier: c'était très facile de trouver deux valeurs, et puis le HUE c'est juste le placement d'une couleur sur un cercle. Reste plus qu'à diviser le cercle en 3 sections pour définir la dominante et après tout coule de source.
Déjà il fais un heureux, moi alors encore mercibref , Poshu, tu devrai vendre (ou publier) ton Algo, tu vas faire fortune , ou faire des heureux chez les étudiants
Zut, je peux plus faire fortune parce que je l'ai posté ici et sur purebasicstreet alors?! Quel dommage xDDobro a écrit :bien joué Poshu
oui j'ai fait une recherche sur le NEt, car je me disais, qu'il doit bien trainer une solution (de facilité)
ben en fait ...meme pas ! meme les pages de convertisseur faites en JavaScript, donnent des résultats completement faux
parce que un ou deux site balance un semblant de solution tout le monde a foncé dessus du coup on retrouve le meme Algo
partout (avec le nom des variables qui changent .. mais comme cet Algo est faux, tout le monde se plante !![]()
ps: le Soldat inconnu ne fait pas exception, j'ai un vieux code de lui, qui contient la meme erreur ....
bref , Poshu, tu devrai vendre (ou publier) ton Algo, tu vas faire fortune , ou faire des heureux chez les étudiants
Code : Tout sélectionner
Procedure Max(A,B)
If A > B
ProcedureReturn A
Else
ProcedureReturn B
EndIf
EndProcedure
Procedure Min(A,B)
If A < B
ProcedureReturn A
Else
ProcedureReturn B
EndIf
EndProcedure
Procedure.f Hue(RGB)
Protected R, G, B, nImax, nImin, Hue.f
If RGB < = $FFFFFF Or RGB > = 0
R = Red(RGB)
G = Green(RGB)
B = Blue(RGB)
nImax = Max(Max(r,b),g)
nImin = Min(Min(r,b),g)
If(nImax = r)
Hue=60*(g-b)/(nImax-nImin)
ElseIf nImax = g
Hue=60*(b-r)/(nImax-nImin)+120
ElseIf nImax = b
Hue=60*(r-g)/(nImax-nImin)+240
EndIf
If Hue<0
Hue = 360 + Hue
EndIf
EndIf
ProcedureReturn Hue
EndProcedure
Procedure.f Brightness(RGB)
Protected R, G, B, nImax, Brightness.f
If RGB < = $FFFFFF Or RGB > = 0
R = Red(RGB)
G = Green(RGB)
B = Blue(RGB)
nImax = Max(Max(r,b),g)
Brightness = nImax/255
EndIf
ProcedureReturn Brightness * 100
EndProcedure
Procedure.f Saturation(RGB)
Protected R, G, B, nImax, nImin, Saturation.f
If RGB < = $FFFFFF Or RGB > = 0
R = Red(RGB)
G = Green(RGB)
B = Blue(RGB)
nImax = Max(Max(r,b),g)
nImin = Min(Min(r,b),g)
Saturation = 1 - nImin / nImax
EndIf
ProcedureReturn Saturation * 100
EndProcedure
Procedure HSBToRGB(Hue.f,Saturation.f,Brightness.f)
Protected R,G,B
Protected TopColor = Round(Brightness*255/100,#PB_Round_Nearest)
Protected MinColor = Round((Saturation/100 -1)*-1*TopColor,#PB_Round_Nearest)
Select Hue
Case 61 To 180
G = TopColor
Hue = Round((Hue -120) * (TopColor - MinColor) / 60,#PB_Round_Nearest)
If Hue > 0
R = MinColor
B = hue + R
Else
B = MinColor
R = (hue - B) * -1
EndIf
Case 181 To 300
B = TopColor
Hue = Round((Hue -240) * (TopColor - MinColor) / 60,#PB_Round_Nearest)
If Hue > 0
G = MinColor
R = hue + G
Else
R = MinColor
G = (hue - R) * -1
EndIf
Default
R = TopColor
If hue > 300
Hue - 360
EndIf
Hue = Round(Hue * (TopColor - MinColor) / 60,#PB_Round_Nearest)
If hue > 0
B = MinColor
G = hue + B
Else
G = MinColor
B = (Hue - G) *-1
EndIf
EndSelect
ProcedureReturn RGB(R,G,B)
EndProcedure
OpenWindow(0,0,0,256,256,"Color Gradiant",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
CanvasGadget(0,0,0,256,256)
StartDrawing(CanvasOutput(0))
For loopY = 0 To 255
For loopX = 0 To 255
Plot(loopX,loopY,HSBToRGB(loopX*(360/255),100,100-(loopY/2.55)))
Next
Next
StopDrawing()
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
Ne voie tu rien d'anormale ici, regarde bien...Couleur = 1048831 --> Teinte = 0.00000000000000000000, Saturation = 100.00000000000000000000, Luminosité = 100.00000000000000000000
Couleur = 1049087 --> Teinte = 0.00000000000000000000, Saturation = 99.60784149169921900000, Luminosité = 100.00000000000000000000
Couleur = 1049343 --> Teinte = 0.00000000000000000000, Saturation = 99.21568298339843800000, Luminosité = 100.00000000000000000000
Couleur = 1049599 --> Teinte = 0.00000000000000000000, Saturation = 98.82353210449218800000, Luminosité = 100.00000000000000000000
Couleur = 1049855 --> Teinte = 0.00000000000000000000, Saturation = 98.43137359619140600000, Luminosité = 100.00000000000000000000
Couleur = 1050111 --> Teinte = 0.00000000000000000000, Saturation = 98.03921508789062500000, Luminosité = 100.00000000000000000000
Couleur = 1050367 --> Teinte = 0.00000000000000000000, Saturation = 97.64705657958984400000, Luminosité = 100.00000000000000000000
Couleur = 1050623 --> Teinte = 0.00000000000000000000, Saturation = 97.25490570068359400000, Luminosité = 100.00000000000000000000
Couleur = 1050879 --> Teinte = 0.00000000000000000000, Saturation = 96.86274719238281300000, Luminosité = 100.00000000000000000000
Couleur = 1051135 --> Teinte = 0.00000000000000000000, Saturation = 96.47058868408203100000, Luminosité = 100.00000000000000000000
Couleur = 1051391 --> Teinte = 0.00000000000000000000, Saturation = 96.07843017578125000000, Luminosité = 100.00000000000000000000
Couleur = 1051647 --> Teinte = 0.00000000000000000000, Saturation = 95.68627166748046900000, Luminosité = 100.00000000000000000000
Couleur = 1051903 --> Teinte = 0.00000000000000000000, Saturation = 95.29412078857421900000, Luminosité = 100.00000000000000000000
Couleur = 1052159 --> Teinte = 0.00000000000000000000, Saturation = 94.90196228027343700000, Luminosité = 100.00000000000000000000
Couleur = 1052415 --> Teinte = 0.00000000000000000000, Saturation = 94.50980377197265600000, Luminosité = 100.00000000000000000000
Couleur = 1052671 --> Teinte = 0.00000000000000000000, Saturation = 94.11764526367187500000, Luminosité = 100.00000000000000000000
Couleur = 1052927 --> Teinte = 0.00000000000000000000, Saturation = 93.72548675537109400000, Luminosité = 100.00000000000000000000
Couleur = 1114367 --> Teinte = 0.00000000000000000000, Saturation = 100.00000000000000000000, Luminosité = 100.00000000000000000000
Couleur = 1114623 --> Teinte = 0.00000000000000000000, Saturation = 99.60784149169921900000, Luminosité = 100.00000000000000000000
Couleur = 1114879 --> Teinte = 0.00000000000000000000, Saturation = 99.21568298339843800000, Luminosité = 100.00000000000000000000
Couleur = 1115135 --> Teinte = 0.00000000000000000000, Saturation = 98.82353210449218800000, Luminosité = 100.00000000000000000000
Couleur = 1115391 --> Teinte = 0.00000000000000000000, Saturation = 98.43137359619140600000, Luminosité = 100.00000000000000000000
Couleur = 1115647 --> Teinte = 0.00000000000000000000, Saturation = 98.03921508789062500000, Luminosité = 100.00000000000000000000
Couleur = 1115903 --> Teinte = 0.00000000000000000000, Saturation = 97.64705657958984400000, Luminosité = 100.00000000000000000000
Couleur = 1116159 --> Teinte = 0.00000000000000000000, Saturation = 97.25490570068359400000, Luminosité = 100.00000000000000000000
Couleur = 1116415 --> Teinte = 0.00000000000000000000, Saturation = 96.86274719238281300000, Luminosité = 100.00000000000000000000
Couleur = 1116671 --> Teinte = 0.00000000000000000000, Saturation = 96.47058868408203100000, Luminosité = 100.00000000000000000000
Couleur = 1116927 --> Teinte = 0.00000000000000000000, Saturation = 96.07843017578125000000, Luminosité = 100.00000000000000000000
Couleur = 1117183 --> Teinte = 0.00000000000000000000, Saturation = 95.68627166748046900000, Luminosité = 100.00000000000000000000
Couleur = 1117439 --> Teinte = 0.00000000000000000000, Saturation = 95.29412078857421900000, Luminosité = 100.00000000000000000000
Couleur = 1117695 --> Teinte = 0.00000000000000000000, Saturation = 94.90196228027343700000, Luminosité = 100.00000000000000000000
Couleur = 1117951 --> Teinte = 0.00000000000000000000, Saturation = 94.50980377197265600000, Luminosité = 100.00000000000000000000
Couleur = 1118207 --> Teinte = 0.00000000000000000000, Saturation = 94.11764526367187500000, Luminosité = 100.00000000000000000000
Couleur = 1118463 --> Teinte = 0.00000000000000000000, Saturation = 93.72548675537109400000, Luminosité = 100.00000000000000000000
Couleur = 1118719 --> Teinte = 0.00000000000000000000, Saturation = 93.33333587646484400000, Luminosité = 100.00000000000000000000
Couleur = 1179903 --> Teinte = 0.00000000000000000000, Saturation = 100.00000000000000000000, Luminosité = 100.00000000000000000000
Couleur = 1180159 --> Teinte = 0.00000000000000000000, Saturation = 99.60784149169921900000, Luminosité = 100.00000000000000000000
Couleur = 1180415 --> Teinte = 0.00000000000000000000, Saturation = 99.21568298339843800000, Luminosité = 100.00000000000000000000
Couleur = 1180671 --> Teinte = 0.00000000000000000000, Saturation = 98.82353210449218800000, Luminosité = 100.00000000000000000000
Couleur = 1180927 --> Teinte = 0.00000000000000000000, Saturation = 98.43137359619140600000, Luminosité = 100.00000000000000000000
Couleur = 1181183 --> Teinte = 0.00000000000000000000, Saturation = 98.03921508789062500000, Luminosité = 100.00000000000000000000
Couleur = 1181439 --> Teinte = 0.00000000000000000000, Saturation = 97.64705657958984400000, Luminosité = 100.00000000000000000000
Couleur = 1181695 --> Teinte = 0.00000000000000000000, Saturation = 97.25490570068359400000, Luminosité = 100.00000000000000000000
Couleur = 1181951 --> Teinte = 0.00000000000000000000, Saturation = 96.86274719238281300000, Luminosité = 100.00000000000000000000
Couleur = 1182207 --> Teinte = 0.00000000000000000000, Saturation = 96.47058868408203100000, Luminosité = 100.00000000000000000000
Couleur = 1182463 --> Teinte = 0.00000000000000000000, Saturation = 96.07843017578125000000, Luminosité = 100.00000000000000000000
Couleur = 1182719 --> Teinte = 0.00000000000000000000, Saturation = 95.68627166748046900000, Luminosité = 100.00000000000000000000
Couleur = 1182975 --> Teinte = 0.00000000000000000000, Saturation = 95.29412078857421900000, Luminosité = 100.00000000000000000000
Couleur = 1183231 --> Teinte = 0.00000000000000000000, Saturation = 94.90196228027343700000, Luminosité = 100.00000000000000000000
Couleur = 1183487 --> Teinte = 0.00000000000000000000, Saturation = 94.50980377197265600000, Luminosité = 100.00000000000000000000
Couleur = 1183743 --> Teinte = 0.00000000000000000000, Saturation = 94.11764526367187500000, Luminosité = 100.00000000000000000000
Couleur = 1183999 --> Teinte = 0.00000000000000000000, Saturation = 93.72548675537109400000, Luminosité = 100.00000000000000000000
Couleur = 1184255 --> Teinte = 0.00000000000000000000, Saturation = 93.33333587646484400000, Luminosité = 100.00000000000000000000
Couleur = 1184511 --> Teinte = 0.00000000000000000000, Saturation = 92.94117736816406300000, Luminosité = 100.00000000000000000000
Couleur = 1245439 --> Teinte = 0.00000000000000000000, Saturation = 100.00000000000000000000, Luminosité = 100.00000000000000000000
Couleur = 1245695 --> Teinte = 0.00000000000000000000, Saturation = 99.60784149169921900000, Luminosité = 100.00000000000000000000
Couleur = 1245951 --> Teinte = 0.00000000000000000000, Saturation = 99.21568298339843800000, Luminosité = 100.00000000000000000000
Couleur = 1246207 --> Teinte = 0.00000000000000000000, Saturation = 98.82353210449218800000, Luminosité = 100.00000000000000000000
Couleur = 1246463 --> Teinte = 0.00000000000000000000, Saturation = 98.43137359619140600000, Luminosité = 100.00000000000000000000
Couleur = 1246719 --> Teinte = 0.00000000000000000000, Saturation = 98.03921508789062500000, Luminosité = 100.00000000000000000000
Couleur = 1246975 --> Teinte = 0.00000000000000000000, Saturation = 97.64705657958984400000, Luminosité = 100.00000000000000000000
Couleur = 1247231 --> Teinte = 0.00000000000000000000, Saturation = 97.25490570068359400000, Luminosité = 100.00000000000000000000
Couleur = 1247487 --> Teinte = 0.00000000000000000000, Saturation = 96.86274719238281300000, Luminosité = 100.00000000000000000000
Couleur = 1247743 --> Teinte = 0.00000000000000000000, Saturation = 96.47058868408203100000, Luminosité = 100.00000000000000000000
Couleur = 1247999 --> Teinte = 0.00000000000000000000, Saturation = 96.07843017578125000000, Luminosité = 100.00000000000000000000
Couleur = 1248255 --> Teinte = 0.00000000000000000000, Saturation = 95.68627166748046900000, Luminosité = 100.00000000000000000000
Couleur = 1248511 --> Teinte = 0.00000000000000000000, Saturation = 95.29412078857421900000, Luminosité = 100.00000000000000000000
Couleur = 1248767 --> Teinte = 0.00000000000000000000, Saturation = 94.90196228027343700000, Luminosité = 100.00000000000000000000
Couleur = 1249023 --> Teinte = 0.00000000000000000000, Saturation = 94.50980377197265600000, Luminosité = 100.00000000000000000000
Couleur = 1249279 --> Teinte = 0.00000000000000000000, Saturation = 94.11764526367187500000, Luminosité = 100.00000000000000000000
Couleur = 1249535 --> Teinte = 0.00000000000000000000, Saturation = 93.72548675537109400000, Luminosité = 100.00000000000000000000
Couleur = 1249791 --> Teinte = 0.00000000000000000000, Saturation = 93.33333587646484400000, Luminosité = 100.00000000000000000000
Couleur = 1250047 --> Teinte = 0.00000000000000000000, Saturation = 92.94117736816406300000, Luminosité = 100.00000000000000000000
Couleur = 1250303 --> Teinte = 0.00000000000000000000, Saturation = 92.54901885986328100000, Luminosité = 100.00000000000000000000
Couleur = 1310975 --> Teinte = 0.00000000000000000000, Saturation = 100.00000000000000000000, Luminosité = 100.00000000000000000000
Code : Tout sélectionner
Enumeration 1
#ImageCreation
EndEnumeration
; Minimum entre 2 Valeurs
Procedure.f Min(Val_1.f, Val_2.f, Val_3.f)
If Val_1 <= Val_2
Minimum2.f = Val_1
Else
Minimum2.f = Val_2
EndIf
If Val_3 <= Minimum2.f
Minimum2.f = Val_3
EndIf
ProcedureReturn Minimum2
EndProcedure
; Maximum entre 2 Valeurs
Procedure.f Max(Val_1.f, Val_2.f, Val_3.f)
If Val_1 <= Val_2
Maximum2.f = Val_2
Else
Maximum2.f = Val_1
EndIf
If Val_3 >= Maximum2.f
Maximum2.f = Val_3
EndIf
ProcedureReturn Maximum2
EndProcedure
; Convertie la couleur en Teinte, Saturation et luminosité
Procedure.s RgbToTSL(Couleur.i, NombreDeDecimale.i = 0)
If NombreDeDecimale.i < 0
NombreDeDecimale.i = 0
ElseIf NombreDeDecimale.i > 10
NombreDeDecimale.i = 10
EndIf
; By Dobro d'apres:
; http://www.la-photo-en-faits.com/2013/05/RVB-CMJN-TSL-conversion-definition.html et http://www.irem.univ-montp2.fr/optionsciences/20052006/nuanciers.pdf
R = Red(Couleur.i)
V = Green(Couleur.i)
B = Blue(Couleur.i)
Maxi = Max(R,V,B)
Mini = Min(R,V,B)
C = (Maxi - mini)
If Maxi = R
T.f = 60 * (V - B) / C
EndIf
If Maxi = V
T.f = 60 * (2 + (B - R) / C)
EndIf
If Maxi=B
T.f = 60 * (4 + (B - R) / C)
EndIf
S.f = 100 * C / Maxi
L.f = 100 * Maxi / 255
If T.f <= 0
T.f = 0
EndIf
If L.f <= 0
L.f = 0
EndIf
If S.f <= 0
S.f=0
EndIf
; Debug "T.f = " + T.f
; Debug "S.f = " + S.f
; Debug "L.f = " + L.f
; Debug ""
Sortie.s = StrF(T, NombreDeDecimale.i) + "," + StrF(S, NombreDeDecimale.i) + "," + StrF(L, NombreDeDecimale.i) + "," + Str(R) + "," + Str(V) + "," + Str(B)
ProcedureReturn Sortie.s
EndProcedure
; Création d'une liste qui contiendrat toutes les couleurs don la luminosité est égale strictement à 100.
NewList MaListeDeCouleur.s()
CreateFile(1, "Table de couleurs.txt")
; Je passe en revue toutes les couleurs 24 Bit.
For Couleur.i = 0 To 16777215
TSL.s = RgbToTSL(Couleur.i, 20) ; Je convertie la couleur en court en niveau de Teinte, Saturation et Luminosité.
Teinte.f = ValF(StringField(TSL.s, 1, ",")) ; Récupération du niveau de Teinte de la couleur en court.
Saturation.f = ValF(StringField(TSL.s, 2, ",")) ; Récupération du niveau de Saturation de la couleur en court.
Luminosite.f = ValF(StringField(TSL.s, 3, ",")) ; Récupération du niveau de Luminosité de la couleur en court.
; Je vais porendre en compte que les couleurs ayant un niveau de luminosité égale
; strictement à 100 pour que toutes les couleurs est éxactement la même luminosité.
If Luminosite = 100 ; Si la couleur en court a un niveau de luminosité striquement égale à 100.
WriteStringN(1, "Couleur = " + Str(Couleur.i) + " --> Teinte = " + StrF(Teinte.f, 20) + ", Saturation = " + StrF(Saturation.f, 20) + ", Luminosité = " + StrF(Luminosite.f, 20))
EndIf
Next
CloseFile(1)
Bah là, j'ai fait un dégradé basé sur la brightness et le hue parce que c'est ce qui m'est venu en regardant la photo que tu avais posté, mais le résultat sera équivalant si tu switch entre intensity et brightness, sauf qu'au lieu de tendre vers le noir, ça va tendre vers le blanc... Le problème, c'est que je n'arrive pas à comprendre exactement ce que tu veux, donc je peux pas le coder pour toi :/Lord Nelson a écrit :Jolie![]()
C'est je crois que c'est ce que je voulais![]()
Par contre j'ai vue que tu joue sur la luminosité alors que je pensais qu'il ne fallait pas la changer.
De plus plus tu descends (Vers la fin) et plus il y a des couleurs similaires.