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

169
Visualizações
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 Respostas
Responde à pergunta

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 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