Regra de três simplificada (Map do Processing)
Se tem uma coisa que programador Flash faz muito é regra de três, esta pequena formula matemática é executada diversas vezes dentro de um projeto, e ela é usada para transferir um valor dentro de um intervalo de números para o valor equivalente em um outro intervalo de números. Pro exemplo, no loading de uma imagem você sabe quantos bytes tem a imagem e quantos bytes já foram carregados, agora como calcular o percentual de carregamento? Vamos supor que a imagem tenha 300 bytes e já foram carregados 150 então temos 50% carregado, para chegar a este resultado de uma forma fácil e padronizada:
1 | trace(NumberUtils.map(150, 0, 300, 0, 100)); |
Converti o script escrito originalmente em Processing e Arduino para ActionScript 3.0, agora é só usar.
Mais exemplos de uso:
1 2 3 4 5 6 7 8 9 10 11 12 13 | import br.com.bsoares.utils.NumberUtils; trace(NumberUtils.map(50, 0, 100, 0, 10)); // 5 trace(NumberUtils.map(90, 0, 100, 0, 10)); // 9 trace(NumberUtils.map(90, 100, 0, 0, 10)); // 1 trace(NumberUtils.map(-90, -100, 100, 0, 10)); // 0.5 |
Classe completa:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | /** * NumberUtils * * @author Bruno Soares * @link http://www.bsoares.com.br */ package br.com.bsoares.utils { public class NumberUtils { public function NumberUtils() { } /** * Transfere um valor de um intervalo para outro. * Versão original escrita em Processing (http://processing.org/reference/map_.html). * * @param value Valor a ser transferido * @param inMin Menor valor do primeiro intervalo * @param inMax Maior valor do primeiro intervalo * @param outMin Menor valor do segundo intervalo * @param outMax Maior valor do segundo intervalo * * @return Valor calculado */ public static function map(value:Number, inMin:Number, inMax:Number, outMin:Number, outMax:Number):Number { return (value - inMin) * (outMax - outMin) / (inMax - inMin) + outMin; } } } |
Links relacionados:
Processing: http://processing.org/reference/map_.html
Arduino: http://arduino.cc/en/Reference/Map
Regra de Três: http://pt.wikipedia.org/wiki/Regra_de_tr%C3%AAs, http://www.somatematica.com.br/fundam/regra3s.php
Enjoy
Posts relacionados:
darmowe filmy hotfile…
[...]Regra de três simplificada (Map do Processing) | Bruno Soares[...]…
Eisprungkalender…
[...]Regra de três simplificada (Map do Processing) | Bruno Soares[...]…