tan(90000) = 1.#inf

Started by HaCkZJuaNN, February 23, 2009, 08:15:22 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

SplinterGU

como que con 270000 no funciona? esta en el ejemplo, si que funciona.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

osk

Oye HaCkZJuaNN, ¿publicarás esa librería matemática que estás haciendo? Digo yo que podría servir para facilitar algunos calculillos para física de juegos y similares, si dices que es tan completa, no?

SplinterGU

#17
no, las funciones asi tan simples no sirven, que pasa si le paso 540000 (360000+180000) o 450000 (360000+90000) o incluso valores negativos...

no es tan simple como un simple if... y por otra parte, eso que puse no es invento mio, esta originalmente de Fenix y hay algunas libs que lo hacen...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

HaCkZJuaNN

#18
Supongo que sí la publicaré, primero la pienso utilizar para hacer un programa de matemáticas propiamente dicho y luego tengo pensado hacer algunos de física y demás ciencias. De todas formas aún le queda tiempo, y aviso para los posibles interesados de que lo que es performance no va a tener demasiado, aunque muchos parámetros son ajustables para elegir entre precisión y velocidad, pero tiene límites(sobre todo en velocidad). Además, debido a las limitaciones de bennu con tipos definidos y retornos de funciones(hay que pasar variables como punteros, etc), algunas cosas se pueden hacer un poco tediosas, pero bueno, a mi me sirve, y si alguien más quiere utilizarla cuando la haya terminado, pues bien :)

Sobre lo de 270000, lo que no funciona es la tangente, prueba sin2(270000)/tan2(270000), da un valor, y debería dar infinito o indeterminado.

Sobre lo de ángulos mayores, basta con sustituir el if(angulo == 90000.0 or angulo = 270000.0) por if(abs(angulo%360000) == 90000.0 or abs(angulo%360000) == 270000.0) y lo mismo para el seno. El resto de casos da valores determinados que funcionan bien con las funciones directamente pasadas de c.

De todas formas, ya me he equivocado 2 veces, así que seguramente me esté olvidando de algo otra vez xDDD

Otro saludo más.