2011-05-02 1 views
0

Préface: Pas de devoirs. Je développe un moteur open source pour un jeu très ancien et gère les valeurs d'une manière étrange.Comment trouver la formule de conversion de nombre? Math!

Par exemple, avec la couleur, ils prennent des valeurs de 0-255 pour les valeurs RVB. Assez simple. Mais il semble que lorsqu'ils les traduisent, ils le font très différemment. Par exemple, la valeur old client prendra une valeur RGB '230', '255', '200', respectivement. Cependant, ces valeurs devraient être 137, 151, 118. Je les ai trouvées en échantillonnant une ancienne capture d'écran. Comment puis-je savoir quelle est la formule utilisée par le client pour traduire ces valeurs?

Ma question: Y a-t-il une formule que je peux appliquer pour convertir ces valeurs?

Merci!

+0

J'ai deviné octal, mais il ne vérifie pas: octal donnerait 211, 227, 166 ... hmm ... –

+3

besoin de plus de données. peut-être plusieurs triplés anciens/nouveaux? – Peter

+0

Ne supposez pas que vous avez la source de l'ancien logiciel? ou un exe que vous pourriez partager (si c'est un jeu gratuit)? Ou même le nom du vieux jeu? –

Répondre

4

D'un related question:

NewValue = (((OldValue - OldMin) * (NewMax - NewMin))/(OldMax - OldMin)) + NewMin 

Dans ce cas, OldMin et NewMin sont nuls. Newmax est quelque chose entre 151 et 152, et OldMax est 255. Ainsi, vous pouvez simplifier:

NewValue = (OldValue * NewMax)/OldMax 

Ou

NewValue = (OldValue * 151)/255 

Alors:

230 * 151/255 = 136.19 (pretty close) 
255 * 151/255 = 151 
200 * 151/255 = 118.43 (pretty close) 

Il ne semble pas être tout à fait exact, mais est-ce assez proche pour vous? Peut-être que nous voyons une erreur d'arrondi?