Find X and Y intercepts of a line passing through the given points

• Difficulty Level : Hard
• Last Updated : 04 Aug, 2021

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 using namespace std; // Function to find the X and Y intercepts// of the line passing through// the given pointsvoid getXandYintercept(int P[], int Q[]){    int a = P - Q;    int b = P - Q;     // if line is parallel to y axis    if (b == 0) {        cout << P << endl; // x - intercept will be p        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 << endl; // y - intercept will be p        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;    int y = P;    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 codeint 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 approachclass 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 - Q;        int b = P - Q;         // if line is parallel to y axis        if (b == 0) {             // x - intercept will be p            System.out.println(P);             // 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            System.out.println(P);            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;        int y = P;        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 pointsdef getXandYintercept(P, Q):     a = P - Q    b = P - Q         # if line is parallel to y axis    if b == 0:        print(P)         # x - intercept will be p        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)           # y - intercept will be p        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    y = P    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 codep1 = [5, 2]p2 = [7, 2]getXandYintercept(p1, p2)

C#

 // C# implementation of the approachusing 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 - Q;        int b = P - Q;         // if line is parallel to y axis        if (b == 0) {            Console.WriteLine(P); // x - intercept will be p            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); // y - intercept will be p            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;        int y = P;        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


Output:
6.2
10.33333333333

Time Complexity: O(1)
Auxiliary Space: O(1)

My Personal Notes arrow_drop_up