Encuentra las intersecciones X e Y de una línea que pasa por los puntos dados

Dados dos puntos en un plano 2D, la tarea es encontrar la intersección x y la intersección y de una línea que pasa por los puntos dados.
Ejemplos: 
 

Entrada: puntos[][] = {{5, 2}, {2, 7}} 
Salida: 
6,2 
10,333333333333334
Entrada: puntos[][] = {{3, 2}, {2, 4}} 
Salida: 
4,0 
8,0 
 

Acercarse: 
 

  • Encuentra la pendiente usando los puntos dados.
  • Ponga el valor de la pendiente en la expresión de la línea, es decir, y = mx + c .
  • Ahora encuentre el valor de c usando los valores de cualquiera de los puntos dados en la ecuación y = mx + c
  • Para encontrar el intercepto en x, pon y = 0 en y = mx + c .
  • Para encontrar el intercepto en y, pon x = 0 en y = mx + c .

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

C++

// C++ implementation of the approach
#include <bits/stdc++.h>
using namespace std;
 
// Function to find the X and Y intercepts
// of the line passing through
// the given points
void getXandYintercept(int P[], int Q[])
{
    int a = P[1] - Q[1];
    int b = P[0] - Q[0];
 
    // if line is parallel to y axis
    if (b == 0) {
        cout << P[0] << endl; // x - intercept will be p[0]
        cout << "infinity"; // y - intercept will be infinity
        return;
    }
 
    // if line is parallel to x axis
    if (a == 0) {
        cout << "infinity"; // x - intercept will be infinity
        cout << P[1] << endl; // y - intercept will be p[1]
        return;
    }
 
    // Slope of the line
    double m = a / (b * 1.0);
 
    // y = mx + c in where c is unknown
    // Use any of the given point to find c
    int x = P[0];
    int y = P[1];
    double c = y - m * x;
 
    // For finding the x-intercept put y = 0
    y = 0;
    double r = (y - c) / (m * 1.0);
    cout << r << endl;
 
    // For finding the y-intercept put x = 0
    x = 0;
    y = m * x + c;
    printf("%.8f", c);
}
 
// Driver code
int main()
{
    int p1[] = { 5, 2 };
    int p2[] = { 2, 7 };
    getXandYintercept(p1, p2);
    return 0;
}
 
// This code is contributed by Mohit Kumar

Java

// Java implementation of the approach
class GFG {
 
    // Function to find the X and Y intercepts
    // of the line passing through
    // the given points
    static void getXandYintercept(int P[],
                                  int Q[])
    {
        int a = P[1] - Q[1];
        int b = P[0] - Q[0];
 
        // if line is parallel to y axis
        if (b == 0) {
 
            // x - intercept will be p[0]
            System.out.println(P[0]);
 
            // y - intercept will be infinity
            System.out.println("infinity");
            return;
        }
 
        // if line is parallel to x axis
        if (a == 0) {
 
            // x - intercept will be infinity 
            System.out.println("infinity");
 
            // y - intercept will be p[1]
            System.out.println(P[1]);
            return;
        }
 
        // Slope of the line
        double m = a / (b * 1.0);
 
        // y = mx + c in where c is unknown
        // Use any of the given point to find c
        int x = P[0];
        int y = P[1];
        double c = y - m * x;
 
        // For finding the x-intercept put y = 0
        y = 0;
        double r = (y - c) / (m * 1.0);
        System.out.println(r);
 
        // For finding the y-intercept put x = 0
        x = 0;
        y = (int)(m * x + c);
        System.out.print(c);
    }
 
    // Driver code
    public static void main(String[] args)
    {
        int p1[] = { 5, 2 };
        int p2[] = { 2, 7 };
        getXandYintercept(p1, p2);
    }
}
 
// This code is contributed by kanugargng

Python3

# Python3 implementation of the approach
 
# Function to find the X and Y intercepts
# of the line passing through
# the given points
def getXandYintercept(P, Q):
 
    a = P[1] - Q[1]
    b = P[0] - Q[0]
     
    # if line is parallel to y axis
    if b == 0:
        print(P[0])         # x - intercept will be p[0]
        print("infinity")   # y - intercept will be infinity
        return
     
    # if line is parallel to x axis
    if a == 0:
        print("infinity")     # x - intercept will be infinity
        print(P[1])           # y - intercept will be p[1]
        return
     
     
         
    # Slope of the line
    m = a / b
     
    # y = mx + c in where c is unknown
    # Use any of the given point to find c
    x = P[0]
    y = P[1]
    c = y-m * x
     
    # For finding the x-intercept put y = 0
    y = 0
    x =(y-c)/m
    print(x)
     
    # For finding the y-intercept put x = 0
    x = 0
    y = m * x + c
    print(y)
 
# Driver code
p1 = [5, 2]
p2 = [7, 2]
getXandYintercept(p1, p2)

C#

// C# implementation of the approach
using System;
 
class GFG {
 
    // Function to find the X and Y intercepts
    // of the line passing through
    // the given points
    static void getXandYintercept(int[] P,
                                  int[] Q)
    {
        int a = P[1] - Q[1];
        int b = P[0] - Q[0];
 
        // if line is parallel to y axis
        if (b == 0) {
            Console.WriteLine(P[0]); // x - intercept will be p[0]
            Console.WriteLine("infinity"); // y - intercept will be infinity
            return;
        }
 
        // if line is parallel to x axis
        if (a == 0) {
            Console.WriteLine("infinity"); // x - intercept will be infinity
            Console.WriteLine(P[1]); // y - intercept will be p[1]
            return;
        }
 
        // Slope of the line
        double m = a / (b * 1.0);
 
        // y = mx + c in where c is unknown
        // Use any of the given point to find c
        int x = P[0];
        int y = P[1];
        double c = y - m * x;
 
        // For finding the x-intercept put y = 0
        y = 0;
        double r = (y - c) / (m * 1.0);
        Console.WriteLine(r);
 
        // For finding the y-intercept put x = 0
        x = 0;
        y = (int)(m * x + c);
        Console.WriteLine(c);
    }
 
    // Driver code
    public static void Main()
    {
        int[] p1 = { 5, 2 };
        int[] p2 = { 2, 7 };
        getXandYintercept(p1, p2);
    }
}
 
// This code is contributed by AnkitRai01

Javascript

<script>
    // Javascript implementation of the approach
     
    // Function to find the X and Y intercepts
    // of the line passing through
    // the given points
    function getXandYintercept(P, Q)
    {
        let a = P[1] - Q[1];
        let b = P[0] - Q[0];
   
        // if line is parallel to y axis
        if (b == 0) {
            document.write(P[0] + "</br>"); // x - intercept will be p[0]
            document.write("infinity" + "</br>"); // y - intercept will be infinity
            return;
        }
   
        // if line is parallel to x axis
        if (a == 0) {
            document.write("infinity" + "</br>"); // x - intercept will be infinity
            document.write(P[1] + "</br>"); // y - intercept will be p[1]
            return;
        }
   
        // Slope of the line
        let m = a / (b * 1.0);
   
        // y = mx + c in where c is unknown
        // Use any of the given point to find c
        let x = P[0];
        let y = P[1];
        let c = y - m * x;
   
        // For finding the x-intercept put y = 0
        y = 0;
        let r = (y - c) / (m * 1.0);
        document.write(r + "</br>");
   
        // For finding the y-intercept put x = 0
        x = 0;
        y = parseInt(m * x + c, 10);
        document.write(c.toFixed(11) + "</br>");
    }
     
    let p1 = [ 5, 2 ];
    let p2 = [ 2, 7 ];
    getXandYintercept(p1, p2);
             
</script>
Producción: 

6.2
10.33333333333

 

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

Publicación traducida automáticamente

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