Comprobar si dos vectores son colineales o no

Dados seis números enteros que representan las coordenadas x , y y z de dos vectores , la tarea es verificar si los dos vectores dados son colineales o no.

Ejemplos:

Entrada: x1 = 4, y1 = 8, z1 = 12, x2 = 8, y2 = 16, z2 = 24
Salida:
Explicación: Los vectores dados: 4i + 8j + 12k y 8i + 16j + 24k son colineales.

Entrada: x1 = 2, y1 = 8, z1 = -4, x2 = 4, y2 = 16, z2 = 8
Salida: No
Explicación: Los vectores dados: 2i + 8j – 4k y 4i + 16j + 8k no son colineales.

 

Enfoque: El problema se puede resolver con base en la idea de que dos vectores son colineales si se cumple alguna de las siguientes condiciones:

  • Dos vectores A y B son colineales si existe un número n tal que A = n · b.
  • Dos vectores son colineales si las relaciones de sus coordenadas son iguales, es decir, x1/x2 = y1/y2 = z1/z2
    Nota: Esta condición no es válida si una de las componentes del vector es cero.
  • Dos vectores son colineales si su producto vectorial es igual al Vector NULO .

Por tanto, para resolver el problema, la idea es comprobar si el producto vectorial de los dos vectores dados es igual o no al Vector NULO . Si se encuentra que es cierto, escriba . De lo contrario ,  imprima No.

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

C++14

// C++ program for the above approach
#include <bits/stdc++.h>
using namespace std;
 
// Function to calculate cross
// product of two vectors
void crossProduct(int vect_A[],
                  int vect_B[],
                  int cross_P[])
{
    // Update cross_P[0]
    cross_P[0]
        = vect_A[1] * vect_B[2]
          - vect_A[2] * vect_B[1];
 
    // Update cross_P[1]
    cross_P[1]
        = vect_A[2] * vect_B[0]
          - vect_A[0] * vect_B[2];
 
    // Update cross_P[2]
    cross_P[2]
        = vect_A[0] * vect_B[1]
          - vect_A[1] * vect_B[0];
}
 
// Function to check if two given
// vectors are collinear or not
void checkCollinearity(int x1, int y1,
                       int z1, int x2,
                       int y2, int z2)
{
    // Store the first and second vectors
    int A[3] = { x1, y1, z1 };
    int B[3] = { x2, y2, z2 };
 
    // Store their cross product
    int cross_P[3];
 
    // Calculate their cross product
    crossProduct(A, B, cross_P);
 
    // Check if their cross product
    // is a NULL Vector or not
    if (cross_P[0] == 0 && cross_P[1] == 0
        && cross_P[2] == 0)
        cout << "Yes";
    else
        cout << "No";
}
 
// Driver Code
int main()
{
    // Given coordinates
    // of the two vectors
    int x1 = 4, y1 = 8, z1 = 12;
    int x2 = 8, y2 = 16, z2 = 24;
 
    checkCollinearity(x1, y1, z1,
                      x2, y2, z2);
 
    return 0;
}

Java

// Java program for the above approach
class GFG{
     
// Function to calculate cross
// product of two vectors
static void crossProduct(int vect_A[],
                         int vect_B[],
                         int cross_P[])
{
     
    // Update cross_P[0]
    cross_P[0] = vect_A[1] * vect_B[2] -
                 vect_A[2] * vect_B[1];
 
    // Update cross_P[1]
    cross_P[1] = vect_A[2] * vect_B[0] -
                 vect_A[0] * vect_B[2];
 
    // Update cross_P[2]
    cross_P[2] = vect_A[0] * vect_B[1] -
                 vect_A[1] * vect_B[0];
}
 
// Function to check if two given
// vectors are collinear or not
static void checkCollinearity(int x1, int y1,
                              int z1, int x2,
                              int y2, int z2)
{
     
    // Store the first and second vectors
    int A[] = { x1, y1, z1 };
    int B[] = { x2, y2, z2 };
 
    // Store their cross product
    int cross_P[] = new int[3];
 
    // Calculate their cross product
    crossProduct(A, B, cross_P);
 
    // Check if their cross product
    // is a NULL Vector or not
    if (cross_P[0] == 0 && cross_P[1] == 0 &&
        cross_P[2] == 0)
        System.out.print("Yes");
    else
        System.out.print("No");
}
 
// Driver Code
public static void main (String[] args)
{
     
    // Given coordinates
    // of the two vectors
    int x1 = 4, y1 = 8, z1 = 12;
    int x2 = 8, y2 = 16, z2 = 24;
 
    checkCollinearity(x1, y1, z1,
                      x2, y2, z2);
}
}
 
// This code is contributed by AnkThon

Python3

# Python3 program for the above approach
 
# Function to calculate cross
# product of two vectors
def crossProduct(vect_A, vect_B, cross_P):
    # Update cross_P[0]
    cross_P[0] = (vect_A[1] * vect_B[2] -
                  vect_A[2] * vect_B[1])
 
    # Update cross_P[1]
    cross_P[1] = (vect_A[2] * vect_B[0] -
                  vect_A[0] * vect_B[2])
 
    # Update cross_P[2]
    cross_P[2] = (vect_A[0] * vect_B[1] -
                  vect_A[1] * vect_B[0])
 
# Function to check if two given
# vectors are collinear or not
def checkCollinearity(x1, y1, z1, x2, y2, z2):
     
    # Store the first and second vectors
    A = [x1, y1, z1]
    B = [x2, y2, z2]
 
    # Store their cross product
    cross_P = [0 for i in range(3)]
 
    # Calculate their cross product
    crossProduct(A, B, cross_P)
 
    # Check if their cross product
    # is a NULL Vector or not
    if (cross_P[0] == 0 and
        cross_P[1] == 0 and
        cross_P[2] == 0):
        print("Yes")
    else:
        print("No")
 
# Driver Code
if __name__ == '__main__':
     
    # Given coordinates
    # of the two vectors
    x1 = 4
    y1 = 8
    z1 = 12
    x2 = 8
    y2 = 16
    z2 = 24
 
    checkCollinearity(x1, y1, z1, x2, y2, z2)
 
# This code is contributed by bgangwar59

C#

// C# program for the above approach
using System;
 
class GFG{
     
// Function to calculate cross
// product of two vectors
static void crossProduct(int []vect_A,
                         int []vect_B,
                         int []cross_P)
{
     
    // Update cross_P[0]
    cross_P[0] = vect_A[1] * vect_B[2] -
                 vect_A[2] * vect_B[1];
 
    // Update cross_P[1]
    cross_P[1] = vect_A[2] * vect_B[0] -
                 vect_A[0] * vect_B[2];
 
    // Update cross_P[2]
    cross_P[2] = vect_A[0] * vect_B[1] -
                 vect_A[1] * vect_B[0];
}
 
// Function to check if two given
// vectors are collinear or not
static void checkCollinearity(int x1, int y1,
                              int z1, int x2,
                              int y2, int z2)
{
     
    // Store the first and second vectors
    int []A = { x1, y1, z1 };
    int []B = { x2, y2, z2 };
 
    // Store their cross product
    int []cross_P = new int[3];
 
    // Calculate their cross product
    crossProduct(A, B, cross_P);
 
    // Check if their cross product
    // is a NULL Vector or not
    if (cross_P[0] == 0 && cross_P[1] == 0 &&
        cross_P[2] == 0)
        Console.Write("Yes");
    else
        Console.Write("No");
}
 
// Driver Code
public static void Main (string[] args)
{
     
    // Given coordinates
    // of the two vectors
    int x1 = 4, y1 = 8, z1 = 12;
    int x2 = 8, y2 = 16, z2 = 24;
 
    checkCollinearity(x1, y1, z1,
                      x2, y2, z2);
}
}
 
// This code is contributed by AnkThon

Javascript

<script>
 
        // Javascript program for the
        // above approach
 
        // Function to calculate cross
        // product of two vectors
        function crossProduct(vect_A,
            vect_B,
            cross_P) {
            // Update cross_P[0]
            cross_P[0]
                = vect_A[1] * vect_B[2]
                - vect_A[2] * vect_B[1];
 
            // Update cross_P[1]
            cross_P[1]
                = vect_A[2] * vect_B[0]
                - vect_A[0] * vect_B[2];
 
            // Update cross_P[2]
            cross_P[2]
                = vect_A[0] * vect_B[1]
                - vect_A[1] * vect_B[0];
        }
 
        // Function to check if two given
        // vectors are collinear or not
        function checkCollinearity(x1, y1,
            z1, x2,
            y2, z2) {
            // Store the first and second vectors
            let A = [x1, y1, z1];
            let B = [x2, y2, z2];
 
            // Store their cross product
            let cross_P = [];
 
            // Calculate their cross product
            crossProduct(A, B, cross_P);
 
            // Check if their cross product
            // is a NULL Vector or not
            if (cross_P[0] == 0 && cross_P[1] == 0
                && cross_P[2] == 0)
                document.write("Yes")
            else
                document.write("No")
        }
 
        // Driver Code
 
        // Given coordinates
        // of the two vectors
        let x1 = 4, y1 = 8, z1 = 12;
        let x2 = 8, y2 = 16, z2 = 24;
 
        checkCollinearity(x1, y1, z1,
            x2, y2, z2);
 
 
        // This code is contributed by Hritik
         
 </script>
Producción: 

Yes

 

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

Publicación traducida automáticamente

Artículo escrito por vikkycirus 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 *