Ecuación general en un plano
Martinez de Santiago Eric
Orihuela Figueroa Elder Emmanuel
Ramirez Juarez Johnny Alejandro
2 de abril de 2025
Índice
1. Ecuación de un plano de 3 dimensiones 2
1.1. Definición de los puntos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2. Cálculo de los vectores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3. Producto Cruz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.4. Expansión del Determinante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.5. Ecuación del Plano . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.6. Ejemplo Numérico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.7. Vector Normal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.8. Ecuación del Plano . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Código en c 4
3. Estructura del Código 7
3.1. Librerı́as usadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.2. Funciones utilizadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.3. Estructura de el código . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.4. Función determinante laplace() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.5. Función imprimir ecuacion() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.6. Función Principal calcular ecuacion plano() . . . . . . . . . . . . . . . . . . . . . 8
3.7. Entrada de Datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.8. Verificación de Colinealidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.9. Cálculo de los Coeficientes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.10. Evaluación de Punto Adicional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.11. Conclusión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4. Aplicaciones en la vida y en ingenierı́a aeronáutica 12
Resumen
1
1. Ecuación de un plano de 3 dimensiones
La ecuación de un plano en el espacio tridimensional se puede obtener a partir de tres puntos no
colineales. En este documento, explicaremos paso a paso cómo calcular dicha ecuación utilizando
determinantes y el producto cruz.
1.1. Definición de los puntos
Dado tres puntos en el espacio, supongamos que tenemos:
A(x1 , y1 , z1 )
B(x2 , y2 , z2 )
C(x3 , y3 , z3 )
1.2. Cálculo de los vectores
⃗ y AC
Calculamos los vectores AB ⃗ que parten del punto A hacia los puntos B y C respectiva-
mente:
⃗ = (x2 − x1 , y2 − y1 , z2 − z1 )
AB
⃗ = (x3 − x1 , y3 − y1 , z3 − z1 )
AC
1.3. Producto Cruz
⃗ × AC
Para obtener el vector normal al plano, calculamos el producto cruz ⃗n = AB ⃗ utilizando
el determinante de una matriz 3x3:
î ĵ k̂
⃗n = x2 − x1 y2 − y1 z2 − z1
x3 − x1 y3 − y1 z3 − z1
1.4. Expansión del Determinante
Calculamos cada componente del vector normal mediante la expansión del determinante:
A = (y2 − y1 )(z3 − z1 ) − (z2 − z1 )(y3 − y1 )
B = (z2 − z1 )(x3 − x1 ) − (x2 − x1 )(z3 − z1 )
C = (x2 − x1 )(y3 − y1 ) − (y2 − y1 )(x3 − x1 )
1.5. Ecuación del Plano
La ecuación general del plano es:
A(x − x5 ) + B(y − y5 ) + C(z − z5 ) = 0
Sustituyendo el valor de D:
D = −(Ax1 + By1 + Cz1 )
2
Finalmente, la ecuación queda como:
Ax + By + Cz + D = 0
1.6. Ejemplo Numérico
Dado los puntos A(1, 2, 3), B(4, 0, 5), y C(2, 3, 1):
⃗ = (3, −2, 2)
AB
⃗ = (1, 1, −2)
AC
1.7. Vector Normal
El vector normal calculado es:
⃗n = (2, 8, 5)
1.8. Ecuación del Plano
Sustituyendo en la ecuación general:
2x + 8y + 5z − 33 = 0
3
2. Código en c
Figura 1: Bloque 1 de el código
4
Figura 2: Bloque 2 de el código
5
Figura 3: Bloque 3 del código
Figura 4: Bloque 4 de el código
6
3. Estructura del Código
Este documento explica en detalle el funcionamiento de un programa en C que calcula la ecuación
de un plano en el espacio tridimensional a partir de tres puntos, y verifica si un cuarto punto
pertenece a dicho plano.
3.1. Librerı́as usadas
stdio.h (Da acceso al ingreso e impresión de datos)
math.h (Da acceso funciones matemáticas en el programa)
3.2. Funciones utilizadas
double (Da números decimales con bastante precisión)
void (Usado en la declaración de la función la cual no recibe parámetros)
int (tipo de datos para declarar variables)
int main (Programa principal)
return (Para devolver valores de funciones y terminar el programa)
printf (Para imprimir texto y números formateados)
scanf (Para leer la entrada del usuario)
if (Para tomar las decisiones)
else (Para manejar la alternativa cuando la condición del if no se cumple)
while (Para crear bucles)
getchar (para leer caracteres individuales)
fabs (Función que devuelve el valor absoluto de un número)
3.3. Estructura de el código
El código consta de tres funciones principales:
1. determinante laplace(): Calcula determinantes 3x3
2. imprimir ecuacion(): Muestra la ecuación del plano formateada
3. calcular ecuacion plano(): Lógica principal del programa
7
3.4. Función determinante laplace()
double d e t e r m i n a n t e l a p l a c e ( double a1 , double a2 , double a3 ,
double b1 , double b2 , double b3 ,
double c1 , double c2 , double c3 ) {
return a1 * ( b2 * c3 = b3 * c2 ) // C o f a c t o r de a1
= a2 * ( b1 * c3 = b3 * c1 ) // C o f a c t o r de a2
+ a3 * ( b1 * c2 = b2 * c1 ) ; // C o f a c t o r de a3
}
Esta función implementa el método de Laplace para calcular determinantes de matrices 3x3.
La fórmula utilizada es:
det = a1 · (b2 · c3 − b3 · c2) − a2 · (b1 · c3 − b3 · c1) + a3 · (b1 · c2 − b2 · c1)
3.5. Función imprimir ecuacion()
void i m p r i m i r e c u a c i o n ( double A, double B, double C, double D) {
p r i n t f ( ” \ nEl p l a n o que c o n t i e n e a e s e punto e s : ” ) ;
int p r i m e r t e r m i n o = 1 ;
i f (A != 0 ) {
p r i n t f ( ” %.2 f x ” , A ) ;
primer termino = 0;
}
i f (B != 0 ) {
i f ( ! p r i m e r t e r m i n o ) p r i n t f ( ” %s ” , (B > 0 ) ? ”+” : ”=” ) ;
p r i n t f ( ” %.2 f y ” , (B > 0 ) ? B : =B ) ;
primer termino = 0;
}
/* . . . */
}
Esta función formatea la ecuación del plano Ax + By + Cz + D = 0 de manera elegante:
Maneja correctamente los signos positivos/negativos
Omite términos con coeficiente cero
Asegura que el primer término no tenga signo positivo
3.6. Función Principal calcular ecuacion plano()
void c a l c u l a r e c u a c i o n p l a n o ( ) {
double x1 , y1 , z1 , x2 , y2 , z2 , x3 , y3 , z3 ;
p r i n t f ( ” ** P U N T O S D E L P L A N O ** \n” ) ;
8
p r i n t f ( ” I n g r e s a l a coordenada 1 d e l punto 1 : ” ) ; s c a n f ( ”%l f ” , &x1 ) ;
p r i n t f ( ” I n g r e s a l a coordenada 2 d e l punto 1 : ” ) ; s c a n f ( ”%l f ” , &y1 ) ;
p r i n t f ( ” I n g r e s a l a coordenada 3 d e l punto 1 : ” ) ; s c a n f ( ”%l f ” , &z1 ) ;
p r i n t f ( ” I n g r e s a l a coordenada 1 d e l punto 2 : ” ) ; s c a n f ( ”%l f ” , &x2 ) ;
p r i n t f ( ” I n g r e s a l a coordenada 2 d e l punto 2 : ” ) ; s c a n f ( ”%l f ” , &y2 ) ;
p r i n t f ( ” I n g r e s a l a coordenada 3 d e l punto 2 : ” ) ; s c a n f ( ”%l f ” , &z2 ) ;
p r i n t f ( ” I n g r e s a l a coordenada 1 d e l punto 3 : ” ) ; s c a n f ( ”%l f ” , &x3 ) ;
p r i n t f ( ” I n g r e s a l a coordenada 2 d e l punto 3 : ” ) ; s c a n f ( ”%l f ” , &y3 ) ;
p r i n t f ( ” I n g r e s a l a coordenada 3 d e l punto 3 : ” ) ; s c a n f ( ”%l f ” , &z3 ) ;
// / Determinante para v e r i f i c a r s i l o s p u n t o s son c o l i n e a l e s ( usando L a p l a c e )
double d e t = d e t e r m i n a n t e l a p l a c e ( x1 , y1 , 1 ,
x2 , y2 , 1 ,
x3 , y3 , 1 ) ;
i f ( d e t == 0 ) {
p r i n t f ( ” \ nLos puntos son c o l i n e a l e s , no s e puede d e f i n i r un p l a n o . \ n” ) ;
return ;
}
// / C l c u l o de c o e f i c i e n t e s d e l p l a n o Ax + By + Cz + D = 0 usando L a p l a c e
double A = d e t e r m i n a n t e l a p l a c e ( y1 , z1 , 1 ,
y2 , z2 , 1 ,
y3 , z3 , 1 ) ;
double B = = d e t e r m i n a n t e l a p l a c e ( x1 , z1 , 1 ,
x2 , z2 , 1 ,
x3 , z3 , 1 ) ;
double C = d e t e r m i n a n t e l a p l a c e ( x1 , y1 , 1 ,
x2 , y2 , 1 ,
x3 , y3 , 1 ) ;
double D = = d e t e r m i n a n t e l a p l a c e ( x1 , y1 , z1 ,
x2 , y2 , z2 ,
x3 , y3 , z3 ) ;
// / Imprimir e c u a c i n d e l p l a n o p r i n c i p a l
p r i n t f ( ” \ nEl p l a n o que pasa por l o s puntos e s : ” ) ;
i m p r i m i r e c u a c i o n (A, B, C, D) ;
// / Limpiar e l b u f f e r de e n t r a d a a n t e s de p e d i r e l punto a d i c i o n a l
while ( g e t c h a r ( ) != ’ \n ’ ) ;
9
// / P e d i r a l u s u a r i o que p r e s i o n e una t e c l a a n t e s de c o n t i n u a r
p r i n t f ( ” \ n P r e s i o n e ENTER para c o n t i n u a r . . . \ n” ) ;
getchar ( ) ;
// / S o l i c i t a r un punto a d i c i o n a l
double xp , yp , zp ;
p r i n t f ( ” \n ** P U N T O A D I C I O N A L ** \n” ) ;
p r i n t f ( ” I n g r e s a l a coordenada 1 d e l punto a d i c i o n a l : ” ) ; s c a n f ( ”%l f ” , &xp ) ;
p r i n t f ( ” I n g r e s a l a coordenada 2 d e l punto a d i c i o n a l : ” ) ; s c a n f ( ”%l f ” , &yp ) ;
p r i n t f ( ” I n g r e s a l a coordenada 3 d e l punto a d i c i o n a l : ” ) ; s c a n f ( ”%l f ” , &zp ) ;
// / E v a l u a r s i e l punto p e r t e n e c e a l p l a n o
double r e s u l t a d o = A * xp + B * yp + C * zp + D;
i f ( f a b s ( r e s u l t a d o ) < 1 e = 10) { // / Usamos t o l e r a n c i a para c o m p a r a c i n con c e r o
p r i n t f ( ” \ nEl punto p e r t e n e c e a l p l a n o . \ n” ) ;
} else {
p r i n t f ( ” \ nEl punto no p e r t e n e c e a l p l a n o . \ n” ) ;
// / C a l c u l a r nuevo p l a n o p a r a l e l o pasando por e l punto ( xp , yp , zp )
double D nuevo = =(A * xp + B * yp + C * zp ) ;
p r i n t f ( ” El p l a n o p a r a l e l o que c o n t i e n e a e s t e punto e s : ” ) ;
i m p r i m i r e c u a c i o n (A, B, C, D nuevo ) ;
}
}
void c a l c u l a r e c u a c i o n p l a n o ( ) {
double x1 , y1 , z1 , x2 , y2 , z2 , x3 , y3 , z3 ;
p r i n t f ( ” \n ** P U N T O S D E L P L A N O ** \n” ) ;
printf (” Ingresa la coordenada 1 del punto 1: ”); s c a n f ( ”%l f ” , &x1 ) ;
printf (” Ingresa la coordenada 2 del punto 1: ”); s c a n f ( ”%l f ” , &y1 ) ;
printf (” Ingresa la coordenada 3 del punto 1: ”); s c a n f ( ”%l f ” , &z1 ) ;
printf (” Ingresa la coordenada 1 del punto 2: ”); s c a n f ( ”%l f ” , &x2 ) ;
printf (” Ingresa la coordenada 3 del punto 2: ”); s c a n f ( ”%l f ” , &z2 ) ;
p r i n t f ( ” I n g r e s a l a coordenada 1 d e l punto 3 : ” ) ; s c a n f ( ”%l f ” , &x3 ) ;
p r i n t f ( ” I n g r e s a l a coordenada 2 d e l punto 3 : ” ) ; s c a n f ( ”%l f ” , &y3 ) ;
p r i n t f ( ” I n g r e s a l a coordenada 3 d e l punto 3 : ” ) ; s c a n f ( ”%l f ” , &z3 ) ;
3.7. Entrada de Datos
p r i n t f ( ” I n g r e s a l a coordenada 1 d e l punto 1 : ” ) ; s c a n f ( ”%l f ” , &x1 ) ;
/* . . . */
Solicita las coordenadas (x, y, z) de tres puntos en el espacio.
10
3.8. Verificación de Colinealidad
double d e t = d e t e r m i n a n t e l a p l a c e ( x1 , y1 , 1 ,
x2 , y2 , 1 ,
x3 , y3 , 1 ) ;
Calcula el determinante para verificar si los puntos son colineales (determinante = 0). Si son
colineales, no definen un plano único.
3.9. Cálculo de los Coeficientes
Los coeficientes A, B, C y D del plano se calculan como:
y1 z1 1 x1 z1 1
A = y2 z2 1 , B = − x2 z2 1
y3 z3 1 x3 z3 1
x1 y1 1 x1 y1 z1
C = x2 y2 1 , D = − x2 y2 z2
x3 y3 1 x3 y3 z3
3.10. Evaluación de Punto Adicional
double r e s u l t a d o = A * xp + B * yp + C * zp + D;
i f ( f a b s ( r e s u l t a d o ) < 1 e = 10) {
p r i n t f ( ” \ nEl punto p e r t e n e c e a l p l a n o . \ n” ) ;
}
Verifica si el punto (xp, yp, zp) satisface la ecuación del plano usando una tolerancia de 10−10
para manejar errores de precisión numérica.
3.11. Conclusión
Este programa demuestra:
Uso de álgebra lineal para resolver problemas geométricos
Manejo de entrada/salida en C
Control de flujo condicional
Formateo avanzado de salida
11
4. Aplicaciones en la vida y en ingenierı́a aeronáutica
Este tema en la aeronáutica nos sirve para poder modelar y analizar el movimiento den una
aeronave,a continuación describiremos como es que este tema se relaciona directamente con nuestra
carrera:
El movimiento de una aeronave en 3 dimensiones se define como por un sistema de ecuaciones
diferenciales ordinarias
Estas ecuaciones incluyen ecuaciones cinemáticas y dinámicas
Las ecuaciones dinámicas relacionan las fuerzas con la aceleración de traslación
las ecuaciones cinemáticas dan la posición traslacional relativa a un marco de la tierra
Donde la ecuación general de el plano es ax + b(y) + cz + d = 0 representan un plano
A partir de la ecuación del plano se puede obtener un vector normal al plano.
Este vector normal al plano útil para calcular ángulos y distancias con planos y rectas
A la hora de hablar para que nos sirve en nuestra vida cotidiana, sirve para las siguientes
interacciones:
Usos en la vida cotidiana La ecuación de un plano en tres dimensiones permite definir cómo
percibimos e interactuamos con el mundo que nos rodea.
Permite juzgar las distancias.
Permite experimentar la forma y el volumen de los objetos.
Usos en la resolución de problemas Permite ampliar el uso de vectores a aplicaciones más
realistas.
Permite describir el espacio tridimensional, lo que es útil para resolver problemas en los que
la topografı́a del terreno es importante.
12