[C con Clase] FW: Resolver Z usando los angulos Horizontal y Vertical
Ferran Ferri
ferranferri en gmail.com
Vie Ago 28 17:11:58 CEST 2009
Bueno es mas o menos la misma filosofia. Me alegro de haberte ayudado :)
Ferran
2009/8/28 Pedro Rodríguez González <sr.whiteskull en hotmail.com>:
> 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ón
> gluLookAt( pos.x, pos.y, pos.z, vista.x, vista.y, vista.z, 0.0, 1.0, 0.0);
>
> // Reseteo la matriz MODELVIEW
> glMatrixMode(GL_MODELVIEW);
> glLoadIdentity();
>
> // Objeto en questión
> Objeto->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 MODELVIEW
> glMatrixMode(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ón
> Objeto->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 Learn more!
> _______________________________________________
> 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
>
Más información sobre la lista de distribución Cconclase