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