# Check whether two straight lines are orthogonal or not

Given two line segments AB and CD having A(x1, y1), B(x2, y2), C(x3, y3) and D(x4, y4). The task is to check whether these two lines are orthogonal or not. Two lines are called orthogonal if they are perpendicular at the point of intersection.

Examples:

Input: x1 = 0, y1 = 3, x2 = 0, y2 = -5
x3 = 2, y3 = 0, x4 = -1, y4 = 0
Output: Yes

Input:  x1 = 0, y1 = 4, x2 = 0, y2 = -9
x3 = 2, y3 = 0, x4 = -1, y4 = 0
Output: Yes

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Approach: If the slopes of the two lines are m1 and m2 then for them to be orthogonal we need to check if:

• Both lines have infinite slope then answer is no.
• One line has infinite slope and if other line has 0 slope then answer is yes otherwise no.
• Both lines have finite slope and their product is -1 then the answer is yes.

Below is the implementation of the above approach:

## C++

 // C++ implementation of above approach #include using namespace std;    // Function to check if two straight // lines are orthogonal or not bool checkOrtho(int x1, int y1, int x2, int y2,                 int x3, int y3, int x4, int y4) {        int m1, m2;        // Both lines have infinite slope     if (x2 - x1 == 0 && x4 - x3 == 0)         return false;        // Only line 1 has infinite slope     else if (x2 - x1 == 0) {            m2 = (y4 - y3) / (x4 - x3);            if (m2 == 0)             return true;         else             return false;     }        // Only line 2 has infinite slope     else if (x4 - x3 == 0) {            m1 = (y2 - y1) / (x2 - x1);            if (m1 == 0)             return true;         else             return false;     }        else {         // Find slopes of the lines         m1 = (y2 - y1) / (x2 - x1);         m2 = (y4 - y3) / (x4 - x3);            // Check if their product is -1         if (m1 * m2 == -1)             return true;         else             return false;     } }    // Driver code int main() {     int x1 = 0, y1 = 4, x2 = 0, y2 = -9;     int x3 = 2, y3 = 0, x4 = -1, y4 = 0;        checkOrtho(x1, y1, x2, y2, x3, y3, x4, y4) ? cout << "Yes"                                                : cout << "No";        return 0; }

## Java

 //Java implementation of above approach    import java.io.*;    class GFG {            // Function to check if two straight     // lines are orthogonal or not     static boolean checkOrtho(int x1, int y1, int x2, int y2,                     int x3, int y3, int x4, int y4)     {            int m1, m2;                // Both lines have infinite slope         if (x2 - x1 == 0 && x4 - x3 == 0)             return false;            // Only line 1 has infinite slope         else if (x2 - x1 == 0)         {             m2 = (y4 - y3) / (x4 - x3);             if (m2 == 0)                 return true;             else                 return false;         }            // Only line 2 has infinite slope         else if (x4 - x3 == 0)          {              m1 = (y2 - y1) / (x2 - x1);             if (m1 == 0)                 return true;             else                 return false;         }            else          {             // Find slopes of the lines             m1 = (y2 - y1) / (x2 - x1);             m2 = (y4 - y3) / (x4 - x3);                // Check if their product is -1             if (m1 * m2 == -1)                 return true;             else                 return false;         }     }        // Driver code     public static void main (String[] args)     {         int x1 = 0, y1 = 4, x2 = 0, y2 = -9;         int x3 = 2, y3 = 0, x4 = -1, y4 = 0;            if(checkOrtho(x1, y1, x2, y2, x3, y3, x4, y4)==true)             System.out.println ("Yes");         else             System.out.println("No" );     } }    //This code is contributed by akt_mit..

## Python3

 # Python 3 implementation of above approach    # Function to check if two straight # lines are orthogonal or not def checkOrtho(x1, y1, x2, y2, x3, y3, x4, y4):            # Both lines have infinite slope     if (x2 - x1 == 0 and x4 - x3 == 0):         return False        # Only line 1 has infinite slope     elif (x2 - x1 == 0):         m2 = (y4 - y3) / (x4 - x3)            if (m2 == 0):             return True         else:             return False        # Only line 2 has infinite slope     elif (x4 - x3 == 0):         m1 = (y2 - y1) / (x2 - x1);            if (m1 == 0):             return True         else:             return False        else:                    # Find slopes of the lines         m1 = (y2 - y1) / (x2 - x1)         m2 = (y4 - y3) / (x4 - x3)            # Check if their product is -1         if (m1 * m2 == -1):             return True         else:             return False        # Driver code if __name__ == '__main__':     x1 = 0     y1 = 4     x2 = 0     y2 = -9     x3 = 2     y3 = 0     x4 = -1     y4 = 0            if(checkOrtho(x1, y1, x2, y2,                   x3, y3, x4, y4)):         print("Yes")     else:         print("No")    # This code is contributed by # Shashank_Sharma

## C#

 // C# implementation of above approach  using System;    class GFG  {             // Function to check if two straight      // lines are orthogonal or not      static bool checkOrtho(int x1, int y1, int x2, int y2,                      int x3, int y3, int x4, int y4)      {             int m1, m2;                 // Both lines have infinite slope          if (x2 - x1 == 0 && x4 - x3 == 0)              return false;             // Only line 1 has infinite slope          else if (x2 - x1 == 0)          {              m2 = (y4 - y3) / (x4 - x3);              if (m2 == 0)                  return true;              else                 return false;          }             // Only line 2 has infinite slope          else if (x4 - x3 == 0)          {              m1 = (y2 - y1) / (x2 - x1);              if (m1 == 0)                  return true;              else                 return false;          }             else         {              // Find slopes of the lines              m1 = (y2 - y1) / (x2 - x1);              m2 = (y4 - y3) / (x4 - x3);                 // Check if their product is -1              if (m1 * m2 == -1)                  return true;              else                 return false;          }      }         // Driver code      public static void Main ()      {          int x1 = 0, y1 = 4, x2 = 0, y2 = -9;          int x3 = 2, y3 = 0, x4 = -1, y4 = 0;             if(checkOrtho(x1, y1, x2, y2, x3, y3, x4, y4) == true)              Console.WriteLine("Yes");          else             Console.WriteLine("No" );      }  }     // This code is contributed by Ryuga

## PHP



Output:

Yes

My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.