mod_mathi

Started by Windgate, October 26, 2010, 09:30:28 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Windgate

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
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es

SplinterGU

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
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Windgate

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?
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es

SplinterGU

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
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Drumpi

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)
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

SplinterGU

nop!

mod_mathi es compatible con DIV, mod_math es compatible con fenix.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Windgate

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?
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es

SplinterGU

Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Windgate

   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.
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es

SplinterGU

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.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

l1nk3rn3l

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?

Windgate

Busca este valor:

180000.0

Y sustituye todos por:

180.0

Con tener sin, cos, tan, asin, acos, atan es suficiente.
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es


Windgate

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.
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es