Même niveau de Saturation!!!! [RESOLU]
Publié : mar. 03/mars/2009 12:02
Salut,
j'ais un petit problème de raisonnement mathematique
,concernant la convertion d'une valeur de saturation d'une couleur, par exemple si j'ais une couleur de Saturation 60 je voudrais qu'elle soit égale à 120!! pour celà il faut ajuster les trois couleurs de façon relative à la saturation voulut
voici le code qui permet de relever la valeur d'une couleur quelconque:
et avec la valeur de sortie (qui est la saturation d'une couleur allant de 0 à 240) je voudrais la comparer à 120 (la saturation voulut de la couleur en question!!);
et une fois la comparaison faite il faudra ajuster les valeurs des trois couleurs séparement RGB pour obtenir une saturation de 120 sans pour autant modifier la luminositée de cette dernière
!!!
code pour relever la luminositée (juste pour vérifier!!):
jusqu'à maintenant j'ais vraiement tout essayé et ya pas moyen
j'ais pensé à un "produit en croix" mais le résultats est laborieux!!!
je sais c'est un "casse tête Chinois" n'empêche j'ais vachement besion de votre aide
, merci à vous
j'ais un petit problème de raisonnement mathematique

voici le code qui permet de relever la valeur d'une couleur quelconque:
Code : Tout sélectionner
Global Max$,Neu$,Min$
Global Max,Neu,Min
ProcedureDLL ConfigRGB2(Color)
Shared Max$,Neu$,Min$
Shared Max,Neu,Min
R = Red(Color) : G = Green(Color) : B = Blue(Color)
If R < G And R < B
Min$="R":Min = R
If G > B
Max$="G":Max = G
Neu$="B":Neu = B
Else
Max$="B":Max = B
Neu$="G":Neu = G
EndIf
ElseIf G < B
Min$="G":Min = G
If R > B
Max$="R":Max = R
Neu$="B":Neu = B
Else
Max$="B":Max = B
Neu$="R":Neu = R
EndIf
Else
Min$="B":Min = B
If R > G
Max$="R":Max = R
Neu$="G":Neu = G
Else
Max$="G":Max = G
Neu$="R":Neu = R
EndIf
EndIf
EndProcedure
ProcedureDLL Round2(Number.f)
x.f = Number-Round(Number,0)
If x>=0.5
ProcedureReturn Round(Number, 1)
Else
ProcedureReturn Round(Number, 0)
EndIf
EndProcedure
ProcedureDLL Saturation(Color)
ConfigRGB2(Color)
If Max+Min =< 255
vs= Round2((Max-Min)/(Max+Min)*240)
Else
vs= Round2((Max-Min)/(510-(Max+Min))*240)
EndIf
If vs<0:vs=0:EndIf
If vs>240:vs=240:EndIf
ProcedureReturn vs
EndProcedure
et avec la valeur de sortie (qui est la saturation d'une couleur allant de 0 à 240) je voudrais la comparer à 120 (la saturation voulut de la couleur en question!!);
et une fois la comparaison faite il faudra ajuster les valeurs des trois couleurs séparement RGB pour obtenir une saturation de 120 sans pour autant modifier la luminositée de cette dernière

code pour relever la luminositée (juste pour vérifier!!):
Code : Tout sélectionner
ProcedureDLL Luminance(Color) ; luminosité
ConfigRGB2(Color)
lumen=Round2(240*(Max + Min)/510)
ProcedureReturn lumen
EndProcedure

j'ais pensé à un "produit en croix" mais le résultats est laborieux!!!
je sais c'est un "casse tête Chinois" n'empêche j'ais vachement besion de votre aide
