Realmente estoy luchando con lo lentas e ineficientes que son las funciones de seno y coseno de javascript. Estoy haciendo un juego de disparos en primera persona con p5.js webgl y realmente está causando un montón de retraso.
¿Alguien puede decirme cómo encontrar el seno/coseno de un ángulo con un solo ángulo? o al menos mostrarme una forma más eficiente de hacer esto?
Entonces, literalmente, estoy tratando de recrear las funciones Math.cos y Math.sin para simplemente ejecutarlas más rápido.
Si sus grados son solo grados enteros completos en el rango de 0 a 359, puede almacenar en caché el resultado del seno/coseno en una matriz, donde los grados son el índice de la matriz:
const pi180 = (Math.PI/180); const angles =[...new Array(360).fill(0)].map((_,i) => ({ cos: Math.cos(i * pi180), sin: Math.sin(i * pi180) })); console.log(angles); Si quisieras, por ejemplo, el coseno de 32 grados, sería angles[32].cos
Esto es más difícil de hacer usando radianes, ya que se trata de valores de punto flotante y necesitaría una forma de truncar o interpolar entre valores.
Un breve comentario sobre su creencia de que cos / sine son su cuello de botella: esto es poco probable. Es mucho más probable que esté llamando continuamente a funciones matemáticas cuando no es necesario. Verifique su código para asegurarse de que solo calcula las cosas cuando cambian, no en cada fotograma clave de una animación y que solo invalida partes de su código que realmente han cambiado.