Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: ABDERRAMAH en 7 Marzo 2011, 20:52 pm



Título: Problema con vectores 3d
Publicado por: ABDERRAMAH en 7 Marzo 2011, 20:52 pm
Bueno, no es exáctamente un problema de programación, es en realidad de matemática. No era nada fácil explicar el problema, por eso he hecho un esquema de mi duda.
(http://www.weebly.com/uploads/5/3/0/8/5308816/6135244.jpg?1299527030)

Conozco el vector A y el vector B, así como el radio de la circunferencia, el punto c está es la intersección entre la línea A-B-infinito y la circunferencia. Lo más adecuado sería hayar la rotación (en cuaternión) necesaria en el punto B para que éste quede mirando hasta el punto C, pero me bastaría con hayar el punto C (me parece que es más simple). La verdad es que no se por donde empezar, tampoco pido que me resuelvan el problema, me bastaría con algo de información sobre las fórmulas que debo usar para hayarlo.


Título: Re: Problema con vectores 3d
Publicado por: ace332 en 7 Marzo 2011, 21:54 pm
Recorde algo de las clases de geometria analitica :)

Se tiene los puntos:

A=(a1,a2,a3); B=(b1,b2,b3); C=(x,y,z); y el radio 'r' de la esfera

Luego por las condiciones dadas de cumplira:


1. (x-b1)^2 + (y-b2)^2 + (z-b3)^2 = r^2   (Ecuación de la esfera)

2. C = A+t*(B-A); para algún t                     (Ecuación vectorial de la recta)


Sustituyendo el valor de C=(x,y,z) en la ecuación 2 se tiene:

(x,y,z) = (a1,a2,a3)+t*(b1-a1,b2-a2,b3-a3)

(x,y,z) = (a1+t*(b1-a1),a2+t*(b2-a2),a3+t*(b3-a3))

<==>

3.          x = a1+t*(b1-a1)
             y = a2+t*(b2-a2)
             z = a3+t*(b3-a3)

Reemplazando en 1 y simplificando se obtiene:

(t-1)^2*((b1-a1)^2+(b2-a2)^2+(b3-a3)^2) = r^2

Despejando t:

t=1+sqrt((r^2)/((b1-a1)^2+(b2-a2)^2+(b3-a3)^2))

Se sustituye este valor en las ecuaciones 3 y se obtine el valor para C=(x,y,z)  ;D



Título: Re: Problema con vectores 3d
Publicado por: ABDERRAMAH en 7 Marzo 2011, 22:48 pm
Gracias, interesante. Lo único que no me ha quedado totalmente claro es de dónde sale la t. ¿que significa? gracias de nuevo.


Título: Re: Problema con vectores 3d
Publicado por: ace332 en 8 Marzo 2011, 00:17 am
Ahi va la explicación, aunque seguramente estará mejor explicado en los libros  :P
Citar
Dos puntos distintos definen una recta. La recta que pasa por los puntos A=(a1,a2,a3) y B=(b1,b2,b3) estará conformada por los puntos P=(x,y,z) tales que:

P = A+t*(B-A); para t que pertenece a los reales (Ecuación vectorial de la recta)

Donde:
A, B y B-A son vectores (ternas) y la t es un escalar, un número real.

En esa fórmula  '+' y  '-' denotan operaciones con vectores y '*' es una operación entre un número real y un vector...

La anterior fórmula puede ser vista como una forma abreviada de escribir las siguientes ecuaciones:

    x = a1 + t*(b1-a1)
    y = a2 + t*(b2-a2)
    z = a3 + t*(b3-a3); para t que pertenece a los reales

Este grupo de ecuacíones determina la recta que pasa por los puntos A y B porque para distintos valores de t nos devolvera los puntos de la recta. Por ejemplo, para:

t=0; P=(x,y,z)=(a1,a2,a3)                            (el punto A)
t=1; P=(x,y,z)=(b1,b2,b3)                            (el punto B)
t=1/2; p=((a1+a2)/2,(b1+b2)/2,(a3+b3)/2)   (el punto medio entre A y B)

En el problema que planteaste, si C=(c1,c2,c3) es un punto de la recta que pasa por los puntos A y B entonces existe un 't' tal que se cumplira:  

c1 = a1 + t*(b1-a1)
c2 = a2 + t*(b2-a2)
c3 = a3 + t*(b3-a3)

etc, etc

Lo demás creo que ya esta entendido ;)

Saludos.


Título: Re: Problema con vectores 3d
Publicado por: ABDERRAMAH en 8 Marzo 2011, 12:25 pm
Vale, vale, perfecto, es justo lo que necesitaba.