Find X and Y intercepts of a line passing through the given points
Given two points on a 2D plane, the task is to find the x – intercept and the y – intercept of a line passing through the given points.
Examples:
Input: points[][] = {{5, 2}, {2, 7}}
Output:
6.2
10.333333333333334
Input: points[][] = {{3, 2}, {2, 4}}
Output:
4.0
8.0
Approach:
- Find the slope using the given points.
- Put the value of the slope in the expression of the line i.e. y = mx + c.
- Now find the value of c using the values of any of the given points in the equation y = mx + c
- To find the x-intercept, put y = 0 in y = mx + c.
- To find the y-intercept, put x = 0 in y = mx + c.
Below is the implementation of the above approach:
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> |
Output:
6.2 10.33333333333
Time Complexity: O(1)
Auxiliary Space: O(1)
Please Login to comment...