2010-06-09 5 views
0

Possible en double:
Math - mapping numbersbesoin formule pour calculer la valeur

J'ai la valeur "x" qui peut être de 0 à 127 et une valeur "y" qui peut être de - 1000 à 0. Je dois faire cela si x = 0 que y = -1000 et si x = 127 que y = 0 ... Comment puis-je le faire?

+0

Quelle langue? Et quel genre de fonction? – Humberto

+0

Utilisez-vous un langage de programmation? Lequel? –

+1

quelle sera la valeur de y quand x = 1 ou x = 2 ou x = 4? – Salil

Répondre

3

Il semble que vous vouliez juste une équation linéaire (y = mx + b). Dans votre cas, ce serait

y = x*(1000/127) - 1000 
+0

Selon la langue, cela pourrait donner des résultats inexacts résultats (s'il prend les 1000 et 127 et fait une division entière). Vous pourriez vouloir mentionner cela. –

+0

Fonctionne bien! Un grand merci à vous: D – FBSC

+0

Et c'est pourquoi les cours de programmation modernes n'ont pas assez de composants mathématiques assez proches :) (grommelez-vous). Ou assez d'oignons à votre ceinture. –

0

interpolation linéaire ...

pente = (0 à -1000)/(127 - 0) = (1000,0/127,0) ordonnée à l'origine = 127

y = (1000,0/127,0) * x - 1000

Bien sûr, cela suppose x et y peut prendre des valeurs et pas seulement des entiers "vrais".

1

y = (x-127) * (1000/127)

1
y = x * (1000.0/127.0) - 1000.0 

Assurez-vous que vous utilisez des valeurs flottantes dans votre calcul sinon vous obtiendrez des réponses inexactes.

EDIT: Et si vous êtes vraiment pointilleux sur la précision, alors ceci est encore mieux:

y = (int) (0.5 + (x * (1000.0/127.0) - 1000.0)) 

(qui fera l'arrondi correct).

Questions connexes