[C con Clase] FW: Resolver Z usando los angulos Horizontal y Vertical
Steven Davidson
srd4121 en njit.edu
Jue Ago 27 21:26:56 CEST 2009
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
Más información sobre la lista de distribución Cconclase