mod_mathi.dll
He encontrado esta dll en la última versión del Bennupack, no encuentro información sobre ella en la wiki, ¿En qué consiste?
Por cierto, echo de menos una mod_math alternativa que calcule las funciones trigonométricas recibiendo grados y no milésimas, Bennu3D la pide a gritos, así que si alguien se anima... xD
juaz....
Quote from: Windgate on October 26, 2010, 09:30:28 PM
Por cierto, echo de menos una mod_math alternativa que calcule las funciones trigonométricas recibiendo grados y no milésimas, Bennu3D la pide a gritos, así que si alguien se anima... xD
creo que te estas refiriendo a la...
mod_mathi
Eso me excita mucho... ¿Pero entonces tiene exactamente las mismas funciones que la mod_math sólo que admite parámetros float y trabaja con grados en lugar de milésimas?
¿O tiene alguna peculiaridad singular adicional?
bueno, no exactamente, la mod_math usa floats.
el log del cambio dice...
- Add atan2 to mod_math
- Add mod_mathi for compatiblity with DIV in cos, sin, tan, acos, asin, atan, atan2
O sea, que mod_mathi se usa como se venía haciendo hasta ahora, y mod_math es nueva y usa floats ¿no?
Por compatibilidad se podría haber mantenido mod_math y haber llamado a la nueva mod_mathf, ahora hay que cambiar todos los códigos de los juegos (o al menos su bgdc.import :P)
nop!
mod_mathi es compatible con DIV, mod_math es compatible con fenix.
Pero yo lo que busco son funciones trigonométricas que trabajen con grados, no con milésimas.
En Bennu3D todo funciona con grados (float) y a la hora de calcular un seno hay que andar haciendo:
position.x = sin ( 1000 * rotation.y );
Y siempre estar multiplicando y dividiendo por 1000.
¿mod_mathi serviría para eso entonces o no?
me temo que no.
static int math_cos( INSTANCE * my, int * params )
71 {
72 float param = *( float * ) & params[0] ;
73 float res = ( float )cos(( double )( param * M_PI / 180000.0 ) ) ;
74 return *(( int * )&res ) ;
75 }
Pues sería tan sencillo como convertir el 180000.0 en una constante del módulo y hacer que valga 180.0
Todas las funciones de trigonometría tienen ese 180000.0 y eso es lo que hace que trabaje en milésimas en lugar de grados.
Opino que debería estar la dll para trabajar así, sería bastante enriquecedor para el motor porque el cálculo de senos y cosenos no debería estar limitado sólamente por la implementación actual de angle, hay muchos otros usos habituales y no usan milésimas.
las funciones trigonometricas existentes trabajan en conjunto con el sistema de grados de todo el render.
tienen un porque de ser como son.
si tu no usas angle en tus proyectos, eres libre de montarte tu propia dll modificando la actual.
si splinter tiene razon , bueno pasame las sugerencias y lo incluire en la dll por defecto..
incluyendo la que pasaste claro, que otras pueden ser?
Busca este valor:
180000.0
Y sustituye todos por:
180.0
Con tener sin, cos, tan, asin, acos, atan es suficiente.
http://code.google.com/p/otherfenixbennuprojects/downloads/list
listo
Ya tienes el karma, la pruebo mañana, formará parte de la librería 3Dit en sustitución de la mod_math normal...
Estaba ya harto de escribir tantas y tantas veces el * 1000 para hacer bien la trigonometría, además de menos código más eficiencia porque se ahorra ese cálculo a razón de hasta cientos de veces por frame.