Autor Tema: tan(90000) = 1.#inf  (Leído 3652 veces)

SplinterGU

  • Hero Member
  • *****
  • Mensajes: 12894
  • Karma: 377
Re: tan(90000) = 1.#inf
« Respuesta #15 en: Febrero 24, 2009, 11:23:51 pm »
como que con 270000 no funciona? esta en el ejemplo, si que funciona.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

osk

  • Hero Member
  • *****
  • Mensajes: 516
  • Karma: 52
Re: tan(90000) = 1.#inf
« Respuesta #16 en: Febrero 24, 2009, 11:26:46 pm »
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

  • Hero Member
  • *****
  • Mensajes: 12894
  • Karma: 377
Re: tan(90000) = 1.#inf
« Respuesta #17 en: Febrero 24, 2009, 11:27:46 pm »
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...
« última modificación: Febrero 25, 2009, 12:50:52 am por SplinterGU »
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

HaCkZJuaNN

  • Full Member
  • ***
  • Mensajes: 179
  • Karma: 5
Re: tan(90000) = 1.#inf
« Respuesta #18 en: Febrero 25, 2009, 05:27:31 pm »
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.
« última modificación: Febrero 25, 2009, 05:29:19 pm por HaCkZJuaNN »