Check if two given Circles are Orthogonal or not

Given are two circles with their centres C1(x1, y1) and C2(x2, y2) and radius r1 and r2, the task is to check if both the circles are orthogonal or not.

Two curves are said to be orthogonal if their angle of intersection is a right angle i.e the tangents at their point of intersection are perpendicular.

The above two circles are orthogonal

Examples:



Input: C1(4, 3), C2(0, 1), r1 = 2, r2 = 4 
Output: Yes

Input: C1(4, 3), C2(1, 2), r1 = 2, r2 = 2 
Output: No

Approach:

  • Find the distance between the centres of two circles ‘d’ with distance formula.
  • For the circles to be orthogonal we need to check if
    r1 * r1 + r2 * r2 = d * d
  • If it is true, then both the circles are orthagonal. Else not.

Below is the implementation of the above approach:

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ program to check if two
// circles are orthogonal or not
  
#include <bits/stdc++.h>
using namespace std;
  
// Function to Check if the given
// circles are orthogonal
bool orthogonality(int x1, int y1, int x2,
                   int y2, int r1, int r2)
{
  
    // calculating the square
    // of the distance between C1 and C2
    int dsquare = (x1 - x2) * (x1 - x2)
                  + (y1 - y2) * (y1 - y2);
  
    // Check if the given
    // circles are orthogonal
    if (dsquare == r1 * r1 + r2 * r2)
        return true;
    else
        return false;
}
  
// Driver code
int main()
{
    int x1 = 4, y1 = 3;
    int x2 = 0, y2 = 1;
    int r1 = 2, r2 = 4;
  
    bool f = orthogonality(x1, y1, x2,
                           y2, r1, r2);
  
    if (f)
        cout << "Given circles are"
             << " orthogonal.";
    else
        cout << "Given circles are"
             << " not orthogonal.";
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java program to check if two
// circ
import java.util.*;
import java.lang.*;
import java.io.*;
  
class GFG
{
    // Function to Check if the given
    // circles are orthogonal
    public static boolean orthogonality(int x1, int y1, int x2,
                                        int y2, int r1, int r2)
    {
  
        // calculating the square
        // of the distance between C1 and C2
        int dsquare = (x1 - x2) * (x1 - x2) +
                      (y1 - y2) * (y1 - y2);
  
        // Check if the given
        // circles are orthogonal
        if (dsquare == r1 * r1 + r2 * r2)
            return true;
        else
            return false;
    }
  
    // Driver Code
    public static void main(String[] args) throws java.lang.Exception
    {
        int x1 = 4, y1 = 3;
        int x2 = 0, y2 = 1;
        int r1 = 2, r2 = 4;
  
        boolean f = orthogonality(x1, y1, x2, y2, r1, r2);
  
        if (f)
            System.out.println("Given circles are orthogonal.");
        else
            System.out.println("Given circles are not orthogonal.");
    }
}
  
// This code is contributed by ashutosh450

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 program to check if two
# circles are orthogonal or not
  
# Function to Check if the given
# circles are orthogonal
def orthogonality(x1, y1, x2, y2, r1, r2):
  
    # calculating the square
    # of the distance between C1 and C2
    dsquare = (x1 - x2) * (x1 - x2) + \
              (y1 - y2) * (y1 - y2);
  
    # Check if the given
    # circles are orthogonal
    if (dsquare == r1 * r1 + r2 * r2):
        return True
    else:
        return False
  
# Driver code
x1, y1 = 4, 3
x2, y2 = 0, 1
r1, r2 = 2, 4
  
f = orthogonality(x1, y1, x2, y2, r1, r2)
  
if (f):
    print("Given circles are orthogonal.")
else:
    print("Given circles are not orthogonal.")
  
# This code is contributed by Mohit Kumar

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# implementation for above program
using System;
  
class GFG
{
    // Function to Check if the given
    // circles are orthogonal
    public static bool orthogonality(int x1, int y1, int x2,
                                     int y2, int r1, int r2)
    {
  
        // calculating the square
        // of the distance between C1 and C2
        int dsquare = (x1 - x2) * (x1 - x2) +
                      (y1 - y2) * (y1 - y2);
  
        // Check if the given
        // circles are orthogonal
        if (dsquare == r1 * r1 + r2 * r2)
            return true;
        else
            return false;
    }
  
    // Driver Code
    public static void Main() 
    {
        int x1 = 4, y1 = 3;
        int x2 = 0, y2 = 1;
        int r1 = 2, r2 = 4;
  
        bool f = orthogonality(x1, y1, x2, y2, r1, r2);
  
        if (f)
            Console.WriteLine("Given circles are orthogonal.");
        else
            Console.WriteLine("Given circles are not orthogonal.");
    }
}
  
// This code is contributed by AnkitRai01

chevron_right


Output:

Given circles are orthogonal.


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.