Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

162
Vistas
Calcule Sin Y dado X (con compensación)

Tengo una función ( desde aquí ) que calcula la coordenada Y cuando se le da X

 function calculateSinYGivenX(time, frequency = 1, amplitude = 1, phase = 0, offset = 0) { return Math.sin((time * frequency * (Math.PI * 2)) + (phase * (Math.PI * 2))) * amplitude + offset; }

Hasta ahora mis pruebas pasan como se esperaba

 expect(calculateSinYGivenX(time = 0, frequency = 1, amplitude = 1, phase = 0, offset = 0)).toEqual(0); expect(calculateSinYGivenX(time = 0.25, frequency = 1, amplitude = 1, phase = 0, offset = 0)).toEqual(1); expect(calculateSinYGivenX(time = 0.5, frequency = 1, amplitude = 1, phase = 0, offset = 0)).toBeCloseTo(0); expect(calculateSinYGivenX(time = 0.75, frequency = 1, amplitude = 1, phase = 0, offset = 0)).toEqual(-1); expect(calculateSinYGivenX(time = 1, frequency = 1, amplitude = 1, phase = 0, offset = 0)).toBeCloseTo(0);

Para ilustrar:

ingrese la descripción de la imagen aquí

Cuando trato de cambiar la onda a la derecha ( phase = 0.5 ), fallan

 expect(calculateSinYGivenX(time = 0, frequency = 1, amplitude = 1, phase = 0.5, offset = 0)).toEqual(-1); expect(calculateSinYGivenX(time = 0, frequency = 1, amplitude = 1, phase = 1, offset = 0)).toEqual(0); expect(calculateSinYGivenX(time = 0, frequency = 1, amplitude = 1, phase = 1.5, offset = 0)).toEqual(1); Expected -1.2246467991473532e-16 to equal -1 Expected 2.4492935982947064e-16 to equal 0 Expected -3.6739403974420594e-16 to equal 1

Para ilustrar:

ingrese la descripción de la imagen aquí

Desafortunadamente, no soy lo suficientemente bueno en matemáticas para darme cuenta de dónde me equivoco. He usado fuentes en línea para llegar a este punto, pero parece que no puedo hacer que funcione como se esperaba.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Después de leer y probar algunas cosas, la fase es solo el tiempo de inicio, por lo que puede entenderse como 'compensación de tiempo'. Como resultado, la composición de time + phase siempre dará el mismo resultado (para frecuencia fija, amplitud y compensación)

Por ejemplo :

 console.log(calculateSinYGivenX(time = 0.25, frequency = 1, amplitude = 1, phase = 1.26, offset = 0)); console.log(calculateSinYGivenX(time = 1.26, frequency = 1, amplitude = 1, phase = 0.25, offset = 0)); console.log(calculateSinYGivenX(time = 1.50, frequency = 1, amplitude = 1, phase = 0.01, offset = 0)); => -0.06279051952931265 -0.06279051952931265 -0.06279051952931265

Entonces, las cosas funcionan como se esperaba para la variable de fase.

Tenga cuidado con el controlador de variable de coma flotante en JS, usó la toBeCloseTo(x) , por lo que le sugiero que la use para sus comparaciones.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda