Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

176
Visualizações
Javascript: usar una función matemática para controlar un rango de salida de acuerdo con un rango de entrada

Si sé que una relación de dos variables de entrada "a/b" tiene un rango de [1;2] Y si quiero que mi valor de salida de "y" tenga un rango de [ymin;ymax] de mi elección, según en el rango de "a/b":

¿Hay alguna fórmula que pueda vincular esos dos rangos para que siempre pueda encontrar el valor de y, cualquiera que sea el valor de "a/b" (sabiendo que siempre estará entre 1 y 2)?

Prácticamente:

Tengo una cuadrícula que puedo hacer zoom. No se puede predecir el número de pasos de zoom, pero sé que la escala final dividida por la escala inicial siempre estará entre 1 y 2. Y de acuerdo con ese rango predecible, me gustaría generar proporcionalmente un valor de opacidad para mis líneas de cuadrícula. desde un valor mínimo hasta un valor máximo de mi elección.

Digamos que me gustaría que mis valores de opacidad oscilaran entre 0,12 y 0,38 (es solo un ejemplo) según el nivel de zoom:

La fórmula asegurará que si la relación de escala es 1, la opacidad será 0,12 y si la relación de escala es 2, la opacidad será 0,38. Y todos los valores de opacidad intermedios permanecerían "proporcionales" (un aumento de escala del 50% = un aumento de opacidad del 50%, etc.). Y eso debería funcionar para cualquier rango de salida de mi elección.

Así que me pregunto si buscar una fórmula para lograr esto es razonable o si es más difícil de calcular de lo que parece.

Algo como esto

 let opacity[from desired min to max] = (endScale/startScale)[from 1 to 2] * something + opacityMin;

Pero eso es lineal y probablemente no se ajuste a mis necesidades...

Traté de trazar algunos puntos en papel para averiguarlo, pero la curva no es lineal y no sé cómo encontrar su fórmula algebraica, si es que hay una.

Esto es lo que tracé con el ejemplo de 0.12 a 0.38, considerando la misma progresión dentro del rango de entrada y el rango de salida:

 Input Output percentage multiplier -------------------------------------------- 1 0.12 0% (* 0.12) 1.25 0.185 25% (* 0.148) 1.5 0.25 50% (* 0.166..) 1.75 0.315 75% (* 0.18) 2 0.38 100% (* 0.19)

Si predigo la salida que necesito usando algunos valores de entrada entre 1 y 2, los coeficientes no coinciden, por supuesto. Así que no sé cómo vincular esos dos rangos. .

Cualquier ayuda sería apreciada. Al menos para orientarse un poco.

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

No encontré otra manera, era un poco raro.

 const range = (props) => { const { rangeInput, rangeOutPut, input } = props if(rangeInput.length && rangeOutPut.length && input){ const BindingMinInput = rangeInput[0] const BindingMaxInput = rangeInput[1] const BindingMin = rangeOutPut[0] const BindingMax = rangeOutPut[1] const outPutMax = (function(){ if(rangeInput.includes(input)){ return input } const test = BindingMaxInput - input return BindingMax * test }()) return outPutMax } else { throw new Error('Props is undefined, or badly formatted props') } } range({ rangeInput:[ 1, 2 ], rangeOutPut:[ 0.12, 0.38 ], input:2 })
about 4 years ago · Juan Pablo Isaza Relatório

0

No estoy seguro de si existe un buen algoritmo para eso, pero a partir de su descripción del problema, puedo recomendar hacer algo así:

 const zoomMin = 1; const zoomMax = 2; const opacityMin = 0.12; const opacityMax = 0.38; function getOpacityLevel(zoomLevel) { const zoomRange = (zoomMax - zoomMin); const opacityRange = (opacityMax - opacityMin); const zoomLevelPercent = (zoomLevel - zoomMin) / zoomRange; const opacityLevel = (opacityRange * zoomLevelPercent) + opacityMin; return opacityLevel; } console.log(getOpacityLevel(1.0)); console.log(getOpacityLevel(1.25)); console.log(getOpacityLevel(1.5)); console.log(getOpacityLevel(1.75)); console.log(getOpacityLevel(2.0));

about 4 years ago · Juan Pablo Isaza Relatório

0

si quieres hacerlo al azar.

 var float = Math.random().toFixed(2) console.log(1 + parseFloat(float))
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda