Forums Últimos mensajes - Powered by IBM
 
Tags Palabras claves

coma flotante

30/06/2005 - 13:16 por Jordi Maycas | Informe spam
Hola, estoy aprendiendo algo sobre 3d, y estoy iniciando una aplicacion en
ensamblador para calculo matricial, en coma flotante, y tengo unas dudas.

a) Cual seria la manera mas efectiva para realizar producto de matrices,
para el escalado, rotacion, y traslacion de objetos (dados sus vertices, y
forma de uniones entre ellos).

He pensado en crear varios procedimientos en asm, para ello, con bucles
anidados, y dando como parametros las matrices de la operacion a realizar y
en la otra matriz los vertices...

b) Tengo dudas, ya que no entiendo la utilizacion de tablas de consultas
para calcular sin y cos. Ya que, he leido por ahi, que las que usa
directamente el masm6.15, los resultados no son muy aproximados, y para ello
se usan tablas. ¿De donde salen esas tablas? Alguna referencia?

c) Ahora pensando en directx, y opengl... supongo que todo esto ya estara en
los sdk's de las mismas.. me refiero a las operaciones de objetos en 3d

Ahora mismo lo estoy haciendo en modo consola 32 bits, flat, pero sin
visualizar obviamente nada, estoy apenas creando las funciones de
transformacion. Alguna orientacion para pasarlo eso a aplicacion windows?
Las funciones serian las mismas... solo que lanzandolas contra un DC


Gracias
 

Leer las respuestas

#1 Zephryn Xirdal
02/07/2005 - 12:01 | Informe spam
En Thu, 30 Jun 2005 13:16:10 +0200, Jordi Maycas
escribió:

Hola, estoy aprendiendo algo sobre 3d, y estoy iniciando una aplicacion
en
ensamblador para calculo matricial, en coma flotante, y tengo unas dudas.



La primera optimización sería intentar trabajar con enteros de 32 bits;
debes convertir tu coma flotante a enteros; si no es posible, entonces
podrías trabajar en coma fija. Y, desde luego, usar las instrucciones
extendidas del micro para el que trabajes.


a) Cual seria la manera mas efectiva para realizar producto de matrices,
para el escalado, rotacion, y traslacion de objetos (dados sus vertices,
y
forma de uniones entre ellos).



Por ahí hay infinidad de tutoriales y bibliotecas ya hechas para todo eso;
yo ahora no recuerdo ninguna, pero haberlas, haylas.


He pensado en crear varios procedimientos en asm, para ello, con
bucles
anidados, y dando como parametros las matrices de la operacion a
realizar y
en la otra matriz los vertices...

b) Tengo dudas, ya que no entiendo la utilizacion de tablas de consultas
para calcular sin y cos. Ya que, he leido por ahi, que las que usa
directamente el masm6.15, los resultados no son muy aproximados, y para
ello
se usan tablas. ¿De donde salen esas tablas? Alguna referencia?



Es fácil. En lugar de hacer el cálculo trigonométrico mediante series de
fourier y demás, tienes unas tablas que te dan directamente el resultado
con el tiempo de proceso de un acceso a tabla. Luego está la
"granularidad" de la misma, de modo que si el salto entre cada valor es de
0.1 grados, y tu necesitas el seno de 23.05, pues tomas el valor de 23.10
y el de 23.00 y haces una media aritmética.

Si no las encuentras, las puedes hacer tu mismo. Haz un programa que vaya
generando los valores y los guardas en un fichero. En muchos manuales de
matemáticas suelen aparecer tablas de todo tipo...

...pero si no me equivoco (y no me falla la memoria) a fecha de hoy los
micros intel tienen funciones trigonométricas nativas.


c) Ahora pensando en directx, y opengl... supongo que todo esto ya
estara en
los sdk's de las mismas.. me refiero a las operaciones de objetos en
3d




Pos claro que sí. Para eso están. El DirectX no sé, pero el OpenGL sí, así
que asumo que el DX también lo tiene.

Ahora mismo lo estoy haciendo en modo consola 32 bits, flat, pero sin
visualizar obviamente nada, estoy apenas creando las funciones de
transformacion. Alguna orientacion para pasarlo eso a aplicacion
windows?
Las funciones serian las mismas... solo que lanzandolas contra un DC


Gracias








La experiencia es como un billete de lotería comprado después del sorteo.
No creo en ella.
Powered by zxFortunes - It's free -
http://sourceforge.net/projects/zxfortune

Preguntas similares