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

Preguntas similare

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
Respuesta Responder a este mensaje
#2 Jordi Maycas
02/07/2005 - 18:18 | Informe spam
ok ,actualmente estoy probandolo en un amd athlon 3200 64 bits. y bueno
ya empezamos con que viene con el xp 32 bits normal y corriente. Y luego hay
el conflicto de concepto, entre procesador de 64 bits, instrucciones de 64
bits y SO's de 64 bits. Quiero decir, para usar las instrucciones de 64
bits, necesito un SO de 64 bits, no? Por ello, me estoy bajando una trial
del xp 64 bits

Me he bajado todos los manuales de amd, q x cierto hay como 5 manuales sobre
procesador, memoria, instrucciones, etc, etc, y a simple vista, son muy
completos, para empezar a ver las ventajas y desventajas con Intel y
demas...


"Zephryn Xirdal" wrote in message
news:
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
Respuesta Responder a este mensaje
#3 Zephryn Xirdal
02/07/2005 - 20:30 | Informe spam
Pedro, hace mucho tiempo que no hago nada en ensamblador para PC, desde la
época de los 16 bits y los primeros micros de 32 bits. En principio todo
depende del modo en el que se ejecute el sistema operativo.

Ignoro por completo las características de los micros de 64 bits, pero
debe tener varios modos, entre los que seguro está uno plano de 64 bits
con modo usuario y modo supervisor (o como quiera que lo llamen ahora).
Seguro que tendrá un submodo de 32 bits también plano. Y la opción de
máquina virtual con ayuda de software. Sería cuestión de mirar si el micro
soporta algún modo virtual x64 dependiente del x32 del sistema operativo.

Incluso dentro del modo x32 supongo que permita un subconjunto de
instrucciones de x64. Por mi experiencia en otros micros no intel/amd, hay
micros de 32 bits que, aunque los arranques en modo 16 bits, siguen
ejecutando internamente todo el juego (o casi todo) de instrucciones de 32
bits, con sus registros internos a 32 bits, etcétera.

Ignoro los casos de Intel y de AMD, pero seguro que tienen implementada
alguna opción de las que te he dicho. Casi seguro el mayor problema sería
cambiar el micro de modo, que seguro requiere instrucciones de anillo 0 y
el windows es muy posible que no te deje...





En Sat, 02 Jul 2005 18:18:10 +0200, Jordi Maycas
escribió:

ok ,actualmente estoy probandolo en un amd athlon 3200 64 bits. y
bueno
ya empezamos con que viene con el xp 32 bits normal y corriente. Y luego
hay
el conflicto de concepto, entre procesador de 64 bits, instrucciones de
64
bits y SO's de 64 bits. Quiero decir, para usar las instrucciones de 64
bits, necesito un SO de 64 bits, no? Por ello, me estoy bajando una trial
del xp 64 bits

Me he bajado todos los manuales de amd, q x cierto hay como 5 manuales
sobre
procesador, memoria, instrucciones, etc, etc, y a simple vista, son muy
completos, para empezar a ver las ventajas y desventajas con Intel y
demas...


"Zephryn Xirdal" wrote in message
news:
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









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
Respuesta Responder a este mensaje
#4 Zephryn Xirdal
02/07/2005 - 20:31 | Informe spam
Joder, no sé de dónde me he sacado que te llamas Pedro.

En Sat, 02 Jul 2005 20:30:39 +0200, Zephryn Xirdal
escribió:

Pedro, hace mucho tiempo que no hago nada en ensamblador para PC, desde
la época de los 16 bits y los primeros micros de 32 bits. En principio
todo depende del modo en el que se ejecute el sistema operativo.

Ignoro por completo las características de los micros de 64 bits, pero
debe tener varios modos, entre los que seguro está uno plano de 64 bits
con modo usuario y modo supervisor (o como quiera que lo llamen ahora).
Seguro que tendrá un submodo de 32 bits también plano. Y la opción de
máquina virtual con ayuda de software. Sería cuestión de mirar si el
micro soporta algún modo virtual x64 dependiente del x32 del sistema
operativo.

Incluso dentro del modo x32 supongo que permita un subconjunto de
instrucciones de x64. Por mi experiencia en otros micros no intel/amd,
hay micros de 32 bits que, aunque los arranques en modo 16 bits, siguen
ejecutando internamente todo el juego (o casi todo) de instrucciones de
32 bits, con sus registros internos a 32 bits, etcétera.

Ignoro los casos de Intel y de AMD, pero seguro que tienen implementada
alguna opción de las que te he dicho. Casi seguro el mayor problema
sería cambiar el micro de modo, que seguro requiere instrucciones de
anillo 0 y el windows es muy posible que no te deje...





En Sat, 02 Jul 2005 18:18:10 +0200, Jordi Maycas
escribió:

ok ,actualmente estoy probandolo en un amd athlon 3200 64 bits. y
bueno
ya empezamos con que viene con el xp 32 bits normal y corriente. Y
luego hay
el conflicto de concepto, entre procesador de 64 bits, instrucciones de
64
bits y SO's de 64 bits. Quiero decir, para usar las instrucciones de 64
bits, necesito un SO de 64 bits, no? Por ello, me estoy bajando una
trial
del xp 64 bits

Me he bajado todos los manuales de amd, q x cierto hay como 5 manuales
sobre
procesador, memoria, instrucciones, etc, etc, y a simple vista, son muy
completos, para empezar a ver las ventajas y desventajas con Intel y
demas...


"Zephryn Xirdal" wrote in message
news:
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














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
Respuesta Responder a este mensaje
#5 Jordi Maycas
03/07/2005 - 00:48 | Informe spam
jajaaj sera por la hora no te preocupes Edu.

gracias

"Zephryn Xirdal" wrote in message
news:
Joder, no sé de dónde me he sacado que te llamas Pedro.

En Sat, 02 Jul 2005 20:30:39 +0200, Zephryn Xirdal
escribió:

Pedro, hace mucho tiempo que no hago nada en ensamblador para PC, desde
la época de los 16 bits y los primeros micros de 32 bits. En principio
todo depende del modo en el que se ejecute el sistema operativo.

Ignoro por completo las características de los micros de 64 bits, pero
debe tener varios modos, entre los que seguro está uno plano de 64 bits
con modo usuario y modo supervisor (o como quiera que lo llamen ahora).
Seguro que tendrá un submodo de 32 bits también plano. Y la opción de
máquina virtual con ayuda de software. Sería cuestión de mirar si el
micro soporta algún modo virtual x64 dependiente del x32 del sistema
operativo.

Incluso dentro del modo x32 supongo que permita un subconjunto de
instrucciones de x64. Por mi experiencia en otros micros no intel/amd,
hay micros de 32 bits que, aunque los arranques en modo 16 bits, siguen
ejecutando internamente todo el juego (o casi todo) de instrucciones de
32 bits, con sus registros internos a 32 bits, etcétera.

Ignoro los casos de Intel y de AMD, pero seguro que tienen implementada
alguna opción de las que te he dicho. Casi seguro el mayor problema
sería cambiar el micro de modo, que seguro requiere instrucciones de
anillo 0 y el windows es muy posible que no te deje...





En Sat, 02 Jul 2005 18:18:10 +0200, Jordi Maycas
escribió:

ok ,actualmente estoy probandolo en un amd athlon 3200 64 bits. y
bueno
ya empezamos con que viene con el xp 32 bits normal y corriente. Y
luego hay
el conflicto de concepto, entre procesador de 64 bits, instrucciones de
64
bits y SO's de 64 bits. Quiero decir, para usar las instrucciones de 64
bits, necesito un SO de 64 bits, no? Por ello, me estoy bajando una
trial
del xp 64 bits

Me he bajado todos los manuales de amd, q x cierto hay como 5 manuales
sobre
procesador, memoria, instrucciones, etc, etc, y a simple vista, son muy
completos, para empezar a ver las ventajas y desventajas con Intel y
demas...


"Zephryn Xirdal" wrote in message
news:
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














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
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida