Coplanaridad de dos líneas en geometría 3D

Dadas dos líneas L1 y L2 , cada una de las cuales pasa por un punto cuyo vector de posición se da como (X, Y, Z) y son paralelas a la línea cuyas relaciones de dirección se dan como (a, b, c) , la tarea es verificar si la línea L1 y L2 son coplanares o no. 

Coplanar: si dos líneas están en el mismo plano , entonces las líneas se pueden llamar coplanares. 

Ejemplo: 

Entrada:  
L1: (x1, y1, z1) = (-3, 1, 5) y (a1, b1, c1) = (-3, 1, 5) 
L2: (x1, y1, z1) = (-1 , 2, 5) y (a1, b1, c1) = (-1, 2, 5) 
Salida: Las líneas son coplanares

Entrada:  
L1: (x1, y1, z1) = (1, 2, 3) y (a1, b1, c1) = (2, 4, 6) 
L2: (x1, y1, z1) = (-1, – 2, -3) y (a1, b1, c1) = (3, 4, 5) 
Salida: Las líneas no son coplanares 

Acercarse: 

Hay dos formas de expresar una recta en 3 dimensiones:  

Forma vectorial:
La ecuación de dos rectas cuya coplanaridad se va a determinar en forma vectorial
 

En la ecuación anterior de una línea, un vector es un punto en el plano 3D desde el cual pasa una línea dada, llamado vector de posición a y b vector es la línea vectorial en el plano 3D a la que nuestra línea dada es paralela . Entonces se puede decir que la línea (1) pasa por el punto, digamos A , con el vector de posición a1 y es paralela al vector b1 y la línea (2) pasa por el punto, digamos B con el vector de posición a2 y es paralela a vector b2 . Por lo tanto:  

Las líneas dadas son coplanares si y solo si el vector AB es perpendicular al producto vectorial de los vectores b1 y b2 , es decir,  

Aquí, el producto cruzado de los vectores b1 y b2 dará otra línea vectorial que será perpendicular a las líneas vectoriales b1 y b2 . y AB es el vector línea que une los vectores de posición a1 y a2 de dos líneas dadas. Ahora, verifique si dos líneas son coplanares o no determinando que el producto escalar anterior es cero o no.
 

Forma cartesiana:
Sean (x1, y1, z1) y (x2, y2, z2) las coordenadas de los puntos A y B respectivamente. 
Sean a1, b1, c1 y a2, b2, c2 las relaciones de dirección de los vectores b1 y   b2 respectivamente. Después 
 

Las rectas dadas son coplanares si y solo si:  

En forma cartesiana se puede expresar como:  

Por lo tanto, para ambos tipos de formas se necesita un vector de posición a1 y a2 en la entrada como (x1, y1, z1) y (x2, y2, z2) respectivamente y relaciones de dirección de los vectores b1 y b2 como (a1, b1, c1) y (a2, b2, c2) respectivamente. 
Siga los pasos a continuación para resolver el problema: 

  • Inicialice una array de 3 X 3 para almacenar los elementos del Determinante que se muestra arriba.
  • Calcule el producto vectorial de b2 y b1 y el producto escalar de (a2 – a1) .
  • Si el valor del Determinante es 0, las líneas son coplanares. De lo contrario, son no coplanares.

A continuación se muestra la implementación del enfoque anterior: 

C++

// C++ program implement
// the above approach
#include <iostream>
using namespace std;
 
// Function to generate determinant
int det(int d[][3])
{
    int Sum = d[0][0] * ((d[1][1] * d[2][2]) - (d[2][1] * d[1][2]));
    Sum -= d[0][1] * ((d[1][0] * d[2][2]) -  (d[1][2] * d[2][0]));
    Sum += d[0][2] * ((d[0][1] * d[1][2]) -(d[0][2] * d[1][1]));
     
    // Return the sum
    return Sum;
}
 
// Driver Code
int main()
{
    // Position vector of first line
    int x1 = -3, y1 = 1, z1 = 5; 
     
    // Direction ratios of line to
    // which first line is parallel
    int a1 = -3, b1 = 1, c1 = 5;
     
    // Position vectors of second line
    int x2 = -1, y2 = 2, z2 = 5; 
     
    // Direction ratios of line to
    // which second line is parallel
    int a2 = -1, b2 = 2, c2 = 5;
     
    // Determinant to check coplanarity
    int det_list[3][3] = { {x2 - x1, y2 - y1, z2 - z1}, 
                          {a1, b1, c1}, {a2, b2, c2}};
      
     // If determinant is zero
    if(det(det_list) == 0)
    {
        cout << "Lines are coplanar" << endl;
    }
   
    // Otherwise
    else
    {
        cout << "Lines are non coplanar" << endl;
    }
   return 0;
}
 
// This code is contributed by avanitrachhadiya2155

Java

// Java program implement
// the above approach
import java.io.*;
 
class GFG{
     
// Function to generate determinant
static int det(int[][] d)
{
    int Sum = d[0][0] * ((d[1][1] * d[2][2]) -
                         (d[2][1] * d[1][2]));
    Sum -= d[0][1] * ((d[1][0] * d[2][2]) -
                      (d[1][2] * d[2][0]));
    Sum += d[0][2] * ((d[0][1] * d[1][2]) -
                      (d[0][2] * d[1][1]));
 
    // Return the sum
    return Sum;
}
 
// Driver Code
public static void main (String[] args)
{
     
    // Position vector of first line
    int x1 = -3, y1 = 1, z1 = 5;
 
    // Direction ratios of line to
    // which first line is parallel
    int a1 = -3, b1 = 1, c1 = 5;
     
    // Position vectors of second line
    int x2 = -1, y2 = 2, z2 = 5;
     
    // Direction ratios of line to
    // which second line is parallel
    int a2 = -1, b2 = 2, c2 = 5;
     
    // Determinant to check coplanarity
    int[][] det_list = { {x2 - x1, y2 - y1, z2 - z1},
                         {a1, b1, c1}, {a2, b2, c2}};
 
    // If determinant is zero
    if(det(det_list) == 0)
        System.out.print("Lines are coplanar");
 
    // Otherwise
    else
        System.out.print("Lines are non coplanar");
}
}
 
// This code is contributed by offbeat

Python3

# Python Program implement
# the above approach
 
# Function to generate determinant
def det(d):
    Sum = d[0][0] * ((d[1][1] * d[2][2])
                    - (d[2][1] * d[1][2]))
    Sum -= d[0][1] * ((d[1][0] * d[2][2])
                    - (d[1][2] * d[2][0]))
    Sum += d[0][2] * ((d[0][1] * d[1][2])
                    - (d[0][2] * d[1][1]))
 
    # Return the sum
    return Sum
 
# Driver Code
if __name__ == '__main__':
 
    # Position vector of first line
    x1, y1, z1 = -3, 1, 5
 
    # Direction ratios of line to
    # which first line is parallel
    a1, b1, c1 = -3, 1, 5
 
    # Position vectors of second line
    x2, y2, z2 = -1, 2, 5
 
    # Direction ratios of line to
    # which second line is parallel
    a2, b2, c2 = -1, 2, 5
 
    # Determinant to check coplanarity
    det_list = [[x2-x1, y2-y1, z2-z1],
                [a1, b1, c1], [a2, b2, c2]]
 
    # If determinant is zero
    if(det(det_list) == 0):
        print("Lines are coplanar")
 
    # Otherwise
    else:
        print("Lines are non coplanar")

C#

// C# program implement
// the above approach
using System;
 
class GFG{
 
// Function to generate determinant
static int det(int[,] d)
{
    int Sum = d[0, 0] * ((d[1, 1] * d[2, 2]) -
                         (d[2, 1] * d[1, 2]));
    Sum -= d[0, 1] * ((d[1, 0] * d[2, 2]) -
                      (d[1, 2] * d[2, 0]));
    Sum += d[0, 2] * ((d[0, 1] * d[1, 2]) -
                      (d[0, 2] * d[1, 1]));
 
    // Return the sum
    return Sum;
}
 
// Driver Code
public static void Main()
{
     
    // Position vector of first line
    int x1 = -3, y1 = 1, z1 = 5;
 
    // Direction ratios of line to
    // which first line is parallel
    int a1 = -3, b1 = 1, c1 = 5;
     
    // Position vectors of second line
    int x2 = -1, y2 = 2, z2 = 5;
     
    // Direction ratios of line to
    // which second line is parallel
    int a2 = -1, b2 = 2, c2 = 5;
     
    // Determinant to check coplanarity
    int[,] det_list = { {x2 - x1, y2 - y1, z2 - z1},
                        {a1, b1, c1}, {a2, b2, c2}};
 
    // If determinant is zero
    if (det(det_list) == 0)
        Console.Write("Lines are coplanar");
 
    // Otherwise
    else
        Console.Write("Lines are non coplanar");
}
}
 
// This code is contributed by sanjoy_62

Javascript

<script>
// JavaScript program for the above approach
 
// Function to generate determinant
function det(d)
{
    let Sum = d[0][0] * ((d[1][1] * d[2][2]) -
                         (d[2][1] * d[1][2]));
    Sum -= d[0][1] * ((d[1][0] * d[2][2]) -
                      (d[1][2] * d[2][0]));
    Sum += d[0][2] * ((d[0][1] * d[1][2]) -
                      (d[0][2] * d[1][1]));
  
    // Return the sum
    return Sum;
}
       
// Driver Code
     
     // Position vector of first line
    let x1 = -3, y1 = 1, z1 = 5;
  
    // Direction ratios of line to
    // which first line is parallel
    let a1 = -3, b1 = 1, c1 = 5;
      
    // Position vectors of second line
    let x2 = -1, y2 = 2, z2 = 5;
      
    // Direction ratios of line to
    // which second line is parallel
    let a2 = -1, b2 = 2, c2 = 5;
      
    // Determinant to check coplanarity
    let det_list = [[x2 - x1, y2 - y1, z2 - z1],
                         [a1, b1, c1], [a2, b2, c2]];
  
    // If determinant is zero
    if(det(det_list) == 0)
        document.write("Lines are coplanar");
  
    // Otherwise
    else
        document.write("Lines are non coplanar");
                   
</script>
Producción: 

Lines are coplanar

 

Tiempo Complejidad: O(1) 
Espacio Auxiliar: O(1)
 

Publicación traducida automáticamente

Artículo escrito por amit_mangal_ y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *