Angulos y distancias

Distancia entre dos puntos

d= ( x 2 − x 1 ) 2 + ( y 2 − y 1 ) 2 + ( z 2 − z 1 ) 2

Calcular la distancia entre los puntos A (1,2,3) y B (4,-1,3)

La distancia entre dos puntos es el módulo del vector diferencia de los vectores u → − v →

>> u=[1,2,3];
>> v=[4,-1,3];
>> norm(u-v)
ans =    4.2426

Vector normal a un plano

Primero calculamos la ecuación del plano que pasa por un punto A y es perpendicular a un vector n → tal como se muestra en la figura. El vector u → va del punto A(x0,y0,z0) al punto P(x,y,z)

El producto escalar de los vectores n → y u → deberá ser cero.

u → =(x− x 0 ) i ^ +(y− y 0 ) j ^ +(z− z 0 ) k ^ n → =a i ^ +b j ^ +c k ^ u → · n → =a(x− x 0 )+b(y− y 0 )+c(z− z 0 )=0 ax+by+cz=d

que es la ecuación del plano. Las componentes del vector n → normal al plano son los coeficientes a, b, c de x, y y z en la ecuación del plano. El vector unitario normal al plano es

n ^ = a a 2 + b 2 + c 2 i ^ + b a 2 + b 2 + c 2 j ^ + c a 2 + b 2 + c 2 k ^

Queremos trazar el plano local, tangente a la superficie esférica de radio r en un punto de coordenadas φ (longitud) y θ (la latitud es λ=π/2-θ)

Las coordenadas del punto P son

{ x 0 =rsinθcosφ y 0 =rsinθsinφ z 0 =rcosθ

La dirección del vector n → perpendicular al plano tangente a la superficie esférica es radial, la recta que pasa por O y P

n → = x 0 i ^ + y 0 j ^ + z 0 k ^

Para determinar la ecuación del plano multiplicamos escalarmente n → · u →

u → =(x− x 0 ) i ^ +(y− y 0 ) j ^ +(z− z 0 ) k ^ n → · u → =(x− x 0 ) x 0 +(y− y 0 ) y 0 +(z− z 0 ) z 0 =0 x x 0 +y y 0 +z z 0 = r 2

%esfera
R=1;
phi=linspace(0,pi,30);
theta=linspace(0,2*pi,40);
[phi,theta]=meshgrid(phi,theta);
x=R*sin(phi).*cos(theta);
y=R*sin(phi).*sin(theta);
z=R*cos(phi);
h1=mesh(x,y,z);
set(h1,'EdgeColor',[0.6,0.6,0.6]);
axis equal

%paralelo
theta=pi/3;
phi=0:0.1:2*pi;
x=sin(theta)*cos(phi);
y=sin(theta)*sin(phi);
z=cos(theta)*ones(1,length(x));
h1=line(x,y,z);
set(h1,'Color',[.7,0,0],'LineWidth',1.5)
%meridiano
phi=0;
theta=-pi:0.1:pi;
x=sin(theta)*cos(phi);
y=sin(theta)*sin(phi);
z=cos(theta);
h1=line(x,y,z);
set(h1,'Color',[.7,0,0],'LineWidth',1.5)

%plano tangente
phi=0;
theta=pi/3;
x0=sin(theta)*cos(phi);
y0=sin(theta)*sin(phi);
z0=cos(theta);
[x,y]=meshgrid(-0.2+x0:0.05:0.2+x0,-0.2+y0:0.05:0.2+y0);
z=(1-x*x0-y*y0)/z0;
hold on
h1=mesh(x,y,z);
set(h1,'EdgeColor',[0,0,0.8])
%normal al plano (dirección radial)
h1=quiver3(x0,y0,z0,0.5,0.5,0.5);
set(h1,'Color',[.7,0,0],'LineWidth',1.5)

axis equal
view(60,10)
hold off
xlabel('x'); ylabel('y'); zlabel('z')
title('Plano local')

Angulo entre dos planos

El producto escalar nos permite determinar el ángulo entre dos vectores u → y v → .

u → · v → =u·v·cosθ u → · v → = u x v x + u y v y + u z v z cosθ= u → · v → u·v

Si n 1 → y n 2 → son los vectores perpendiculares a cada uno de los dos planos, el ángulo θ entre estos dos vectores es el mismo que el ángulo entre los dos planos. El ángulo entre los dos planos se calcula mediante la siguiente fórmula

a 1 x+ b 1 y+ c 1 z= d 1   n 1 → = a 1 i ^ + b 1 j ^ + c 1 k ^ a 2 x+ b 2 y+ c 2 z= d 2   n 2 → = a 2 i ^ + b 2 j ^ + c 2 k ^ cosθ=| n 1 → · n 2 → n 1 · n 2 |

Calcular el ángulo determinado por los planos: x+2y-z=0, x-y+z=3.

>> n1=[1,2,-1];
>> n2=[1,-1,1];
>> coseno=abs(dot(n1,n2)/(norm(n1)*norm(n2)));
>> ang=acosd(coseno)
ang =   61.8745

Angulo entre una recta y un plano

Sea n → un vector perpendicular al plano y sea u → un vector cuya dirección es la recta. El ángulo entre el plano y la recta es el complementario al ángulo entre los vectores n → y u → .

ax+by+cz=d  n → =a i ^ +b j ^ +c k ^ { x= x 0 +t u x y= y 0 +t u y z= z 0 +t u z cos( π 2 −θ )=| n → · u → n·u |

Calcular el ángulo entre le plano x+y+z=0, y la recta: x=1+t, y=1+2t, z=1+4t.

>> n=[1,1,1];
>> u=[1,2,4];
>> coseno=abs(dot(n,u)/(norm(n)*norm(u)))
coseno =    0.8819
>> ang=90-acosd(coseno)
ang =   61.8745

Calculamos la intersección entre el plano y la recta, de ecuaciones

x+y+z=0 { 2x−y=1 4x−z=3

En la figura, vemos el plano, la recta en color rojo, el vector perpendicular al plano en color azul y el punto de intersección de coordendas x=0.5714, y=0.1429, z=-0.7143.

%plano
[x,y] = meshgrid(-1:0.1:1);
z = -x-y;
hold on
mesh(x,y,z)
%recta
x=[0.5,1];
y=2*x-1;
z=4*x-3;
line(x,y,z,'color','r')
%punto de intersección
B=[1,1,1;2,-1,0;4,0,-1];
b=[0;1;3];
X=B\b
plot3(X(1),X(2),X(3),'bo','markersize',4,'markerfacecolor','b');

quiver3(X(1),X(2),X(3),1,1,1) %vector normal al plano
xlabel('x')
ylabel('y')
zlabel('z')
title('Recta que corta a un plano')
grid on
hold off
view(120,30)

Distancia de un punto a un plano

Distancia de un plano al origen

Queremos calcular la distancia h del origen O al plano de ecuación ax+by+cz=d. Tomemos un punto P (x,y,z) del plano,

La distancia h del origen al plano (segmento en color rojo) es la proyección del vector u → =x i ^ +y j ^ +z k ^ a lo largo de la dirección del vector unitario n → normal al plano, tal como apreciamos en la figura

h= n ^ · u → = a a 2 + b 2 + c 2 x+ b a 2 + b 2 + c 2 y+ c a 2 + b 2 + c 2 z= d a 2 + b 2 + c 2

Distancia de un punto a un plano

La distancia h del punto A (x1,y1,z1) al plano de ecuación ax+by+cz=d (segmento en color rojo), es la diferencia entre la proyección del vector u → a lo largo de la dirección n → (segmento OQ) y la distancia del origen a dicho plano, (segmento OM). h=|OQ|-|OM|

h= n ^ · u → −d= a a 2 + b 2 + c 2 x 1 + b a 2 + b 2 + c 2 y 1 + c a 2 + b 2 + c 2 z 1 − d a 2 + b 2 + c 2 = a x 1 +b y 1 +c z 1 −d a 2 + b 2 + c 2

Calcular la distancia h del punto A (1,3,-2) al plano x-y+z=1

>> n=[1,-1,1];
>> u=[1,3,-2];
>> d=1;
>> h=abs((dot(n,u)-d)/norm(n))
h =    2.8868

Utilizando variables simbólicas

>> n=sym('[1,-1,1]');
>> u=sym('[1,3,-2]');
>> d=sym('1');
>> h=abs((dot(n,u)-d)/sqrt(dot(n,n)))
h =(5*3^(1/2))/3 

El módulo de un vector que se calcula con la función norm no funciona con variables simbólicas, se utiliza la operación equivalente: la raíz cuadrada sqrt del producto escalar dot de un vector consigo mismo.

Distancia de un punto a una recta

Queremos calcular la distancia h desde el punto A (x1,y1,z1) a la recta. Sea u → un vector cuya dirección es la la recta y v → el vector con origen en un punto P (x0,y0,z0) de la recta y extremo en el punto A.

v → =( x 1 − x 0 ) i ^ +( y 1 − y 0 ) j ^ +( z 1 − z 0 ) k ^ h=v·sinθ= | u → × v → | u

Calcular la distancia entre el punto A (1,2,3) y la recta

{ x=1+2t y=1+3t z=4+5t

u → =2 i ^ +3 j ^ +5 k ^ v → =(1−1) i ^ +(2−1) j ^ +(3−4) k ^ = j ^ − k ^

>> u=[2,3,5];
>> v=[0,1,-1];
>> h=norm(cross(u,v))/norm(u)
h =    1.3765

Utilizando variables simbólicas

>> u=sym('[2,3,5]');
>> v=sym('[0,1,-1]');
>> u_v=cross(u,v);
>> h=sqrt(dot(u_v,u_v)/dot(u,u)) 
h =(6*19^(1/2))/19

Distancia entre dos rectas que se cruzan

En la figura se muestra cómo se calcula un área a partir del módulo del producto vectorial de los vectores u → y v → .

u·d=u·v·sinθ=| u → × v → |

El volumen de un paralepípedo formado por tres vectores u → , v → y w → , es igual al área de la base | u → × v → | por la altura h=w·cosθ. El módulo del producto mixto ( u → × v → )· w → .

Si r1 y r2 son dos rectas que se cruzan. Denominamos w → al vector de origen P (x1,y1,z1) en la recta r1 y extremo Q (x2,y2,z2) en la recta r2. El volumen del paralepípedo formado por los vectores u → , v → y w → es el módulo del producto mixto ( u → × v → )· w → . Por otra parte, el volumen del paralepípedo es igual al producto del área de la base | u → × v → | por la altura h que es la distancia entre las dos rectas que se cruzan.

Calcular la distancia h entre las rectas que se cruzan

r 1 { x=1+2t y=2+3t z=1+2t   r 2 { x=2+t y=2+2t z=2+3t

Comprobamos que se cruzan

r 1 { 3x−2y=−1 x−z=0   r 2 { 2x−y=2 3x−z=4

>> A=[3,-2,0;1,0,-1;2,-1,0;3,0,-1];
>> b=[-1;0;2;4];
>> Ab=[A b];
>> rank(A)
ans =     3
>> rank(Ab)
ans =     4

Definimos los vectores.

u → =2 i ^ +3 j ^ +2 k ^ , de la recta r1

v → = i ^ +2 j ^ +3 k ^ , de la recta r2

El punto P de la recta r1 es (1,2,1). El punto Q de la recta r2 es (2,2,2). El vector w → de origen P y extremo Q es

w → = i ^ + k ^ h= | ( u → × v → )· w → | | u → × v → |

>> u=[2,3,2];
>> v=[1,2,3];
>> w=[1,0,1];
>> h=abs(dot(w,cross(u,v)))/norm(cross(u,v))
h =    0.9258

Utilizando variables simbólicas

>> u=sym('[2,3,2]');
>> v=sym('[1,2,3]');
>> w=sym('[1,0,1]');
>> u_v=cross(u,v);
>> h=abs(dot(w,u_v))/sqrt(dot(u_v,u_v))
h =42^(1/2)/7

Referencias

Joaquín Arregui Fernández, Javier Lafuente López, Isabel Morales González, Francisco Padilla Garvi. Matemáticas. Curso de Orientación Universitaria. Editorial Magisterio Español S.A. (1978)