Algorithme de la carte d'un intervalle à un plus petit intervalle de
J'ai essayé de chercher, mais en raison de la nature de ma question, j'ai été incapable de trouver quelque chose de satisfaisant.
Mon problème est le suivant: je suis en train de la carte des nombres allant de 0 à 2000 (même si idéalement, la limite serait réglable) pour le beaucoup plus petit intervalle allant de 10 à 100. La partie supérieure des limites de la carte (2000->100) et de la limite inférieure ainsi. Autre que cela, une entrée qui est plus grand que l'autre entrée dans l'intervalle [0;2000], idéalement, serait plus grand que mappé entrée dans [0;100]
Je pense que cette question n'est pas spécifique à une langue, mais dans le cas où vous vous demandez, je suis en train de travailler avec Javascript aujourd'hui.
- Sont vos gammes de type entier ou réel/float/décimal? Avez-vous besoin de différentes entrées de la source à la carte pour les différents éléments de la destination?
- Juste après la saisie de cette question, je suis venu avec une (pour moi) solution acceptable: j'ai calculé le pourcentage de la valeur de la première entrée dans son intervalle, puis transposé à un pourcentage de l'intervalle.
Vous devez vous connecter pour publier un commentaire.
comme correctement mentionné dans l'autre réponse c'est cartographie linéaire.
Fondamentalement
var nPercentage = ((modifier-nMinValue)/(nMaxValue - nMinValue))*100; var nFontSize = parseInt((nBiggestFont-nSmallestFont)*(nPercentage/100)+nSmallestFont);
Je pense qu'au lieu de vous donner une formule de correspondance directe, une meilleure approche serait d'expliquer l'idée derrière tout cela:
Supposons que nous voulons carte un intervalle [0,1] à l'intervalle [1,3], qui peut être vu comme le problème de trouver f(x) = Ax + B telle que donnant tout x de l'intervalle [0,1], entraînera f(x) ou résultant dans l'intervalle [1,3].
De ce point de vue, nous savons déjà quelques valeurs:
À partir de (1) et (2), nous pouvons conclure que la fonction que les cartes de l'intervalle [0,1] à [1,3] est f(x) = 2x + 1.
À vous très des cas, vous devriez maintenant avoir toutes les connaissances nécessaires pour être en mesure de cartographier [0,2000] intervalle [10,100].
Linéaire simple, cartographie carte
x
àx*90/2000+10
.Ici pourrait être un moyen optimisé pour mapper vos données x,
Ce pseudo-code vous montre la principale idée pour une carte de fonction
que:
Traite de la matrice de cartographie