[C con Clase] FW: Resolver Z usando los angulos Horizontal y Vertical

Pedro Rodríguez González sr.whiteskull en hotmail.com
Vie Ago 28 15:51:14 CEST 2009


Amigo Ferran, eres un crack... :) Funcionó pero no con el orden que me indicaste y luego hice un par de cambios quedo más o menos así:

// renderizo los objetos de la escena
// La cámara en cuestióngluLookAt( pos.x, pos.y, pos.z, vista.x, vista.y, vista.z, 0.0, 1.0, 0.0);

// Reseteo la matriz MODELVIEWglMatrixMode(GL_MODELVIEW);
glLoadIdentity();

// Objeto en questiónObjeto->render(0.0,0.0,0.0, 0.0,0.0,0.0);
glFlush(0); // Vacío el buffer// y vuelta a empezar
From: sr.whiteskull en hotmail.com
To: cconclase en listas.conclase.net
Date: Fri, 28 Aug 2009 10:45:32 +0000
Subject: Re: [C con Clase] FW: Resolver Z usando los angulos Horizontal	y	Vertical








Si, uso una especie de "miniopenGl", un opengl con menos funciones. Suena interesante lo que propones, dices una cosa así:
...// renderizo los objetos de la escena
// Reseteo la matriz MODELVIEWglMatrixMode(GL_MODELVIEW);
glLoadIdentity();

gluLookAt( pos.x, pos.y, pos.z, vista.x, vista.y, vista.z, 0.0, 1.0, 0.0);

// Objeto en questiónObjeto->render(pos.x+0.0,pos.y+0.0,pos.z+0.0, 0.0,0.0,0.0);
glFlush(0); // Vacío el buffer// y vuelta a empezar
Lo probaré y luego cuento la experiencia
> Date: Fri, 28 Aug 2009 11:12:29 +0200
> From: ferranferri en gmail.com
> To: cconclase en listas.conclase.net
> Subject: Re: [C con Clase] FW: Resolver Z usando los angulos Horizontal y	Vertical
> 
> Si estas trabajando con OpenGL puede haber otra tecnica mas chapuzas
> pero que sirve igual. Primero dibujas la escena, reseteas la matriz
> modelview, situas la camara y despues pones el objeto sin resetear
> otra vez la modelview. Con eso consigues que la posicion de ese objeto
> sea siempre respecto a la camara.
> 
> En DirectX funciona exactamente igual, aunque no conozco tan bien el
> API como para decirte los pasos pero es basicamente lo mismo.
> Ferran
> 
> 
> 
> 2009/8/27 Pedro Rodríguez González <sr.whiteskull en hotmail.com>:
> > Creo q no me expliqué claramente Steve, pero gracias por responder, el tema
> > es que estoy desarrollando una aplicación 3d (casi no hace falta ni que lo
> > mencione), y tengo una "camara", en las posicion pos(vector3D), que a su vez
> > apunta a las coordenadas vista(vector3D), sólo con estos datos "podría"
> > colocar un elemento orbitando alrededor de la cámara, de ahí que use un
> > vector de coordenadas p, si sólo fuera que girara alrededor cómo la "Luna"
> > sobre la "Tierra", eso es algo que está chupao... y es lo que muestro en el
> > código, pero realmente lo que necesito es que ese objeto se mantenga fijo
> > delante de la vista de la cámara, mire a donde mire... en éste esquema
> > "chapucilla" se puede apreciar más o menos la idea.
> > Y claro no lo consigo, hace un par de años buenos lo hice, se que era así
> > más o menos, pero todo los trabajos que hice hace años se quedaron en
> > el portátil desguazado que regalé al instituto (para su estudio)...
> >
> > Si no me equivoco, ||p|| = radical( (p.x)^2 + (p.y)^2 + (p.z)^2 ) esta
> > formula me devuelve la distancia entre dos vectores, no habré usado ni pocas
> > veces ni nada...
> >> Date: Thu, 27 Aug 2009 15:26:56 -0400
> >> From: srd4121 en njit.edu
> >> To: cconclase en listas.conclase.net
> >> Subject: Re: [C con Clase] FW: Resolver Z usando los angulos Horizontal y
> >> Vertical
> >>
> >> Hola Pedro,
> >>
> >> Pedro Rodríguez González wrote:
> >> > Q tal chicos, no se cómo andarán de matemáticas, pero yo
> >> > fatal... Ruborizado
> >> >
> >> > No consigo dar con la posición Z para un vector 3D...
> >> >
> >> > *Código:*
> >> > ...
> >> > ...
> >> > // obtenemos el angulo en radianes
> >> > anguloH=atan2(vista.z-pos.z,vista.x -pos.x);
> >> > anguloV=atan2(vista.z-pos.z,vista.y -pos.y);
> >> >
> >> > p.x=radio*cos(anguloH);
> >> > p.y=radio*cos(anguloV);
> >> > // Que pueo hacer X o Y
> >> > //p.z=sin(anguloH); // funciona pero solo en horizontal
> >> > //p.z=sin(anguloV); // funciona pero solo en vertical
> >> > ...
> >> > ...
> >> >
> >> >
> >> >
> >> > gracias a todo aquel que me aporte una solución sencilla...
> >> >
> >>
> >> Según estoy viendo, quieres crear un vector, p, para que vaya de 'pos' a
> >> 'vista'. Si esto es así, no necesitas hacer todo esto. Simplemente, crea
> >> el vector a partir de dos puntos; esto es,
> >>
> >> p = vista - pos
> >>
> >> Por componentes, esto es equivalente a:
> >>
> >> p.x = vista.x - pos.x
> >> p.y = vista.y - pos.y
> >> p.z = vista.z - pos.z
> >>
> >> Si quieres que la magnitud (o longitud) del vector, p, sea igual a
> >> 'radio', entonces se tratará de una especie de "normalización". Esto es,
> >>
> >> p = (radio / ||p||) * p,
> >>
> >> donde ||p|| = magnitud del vector p, que se calcula así:
> >> ||p|| = radical( (p.x)^2 + (p.y)^2 + (p.z)^2 )
> >>
> >> Ahora p tendrá de magnitud 'radio'.
> >>
> >>
> >> Espero que esto te oriente.
> >>
> >> Steven
> >>
> >>
> >> _______________________________________________
> >> Lista de correo Cconclase Cconclase en listas.conclase.net
> >> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> >> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
> >
> > ________________________________
> > Get news, entertainment and everything you care about at Live.com. Check it
> > out!
> > _______________________________________________
> > Lista de correo Cconclase Cconclase en listas.conclase.net
> > http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> > Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
> >
> 
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ

Connect to the next generation of MSN Messenger   Get it now! 
_________________________________________________________________
Discover the new Windows Vista
http://search.msn.com/results.aspx?q=windows+vista&mkt=en-US&form=QBRE
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20090828/bba99523/attachment.html>


Más información sobre la lista de distribución Cconclase