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
