Comprobar si dos círculos dados son ortogonales o no

Dados dos círculos con sus centros C1 (x1, y1) y C2 (x2, y2) y radio r1 y r2 , la tarea es verificar si ambos círculos son ortogonales o no. 
Se dice que dos curvas son ortogonales si su ángulo de intersección es un ángulo recto, es decir, las tangentes en su punto de intersección son perpendiculares.
 

Los dos círculos anteriores son ortogonales.

Ejemplos: 
 

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

Acercarse: 
 

  • Encuentra la distancia entre los centros de dos círculos ‘d’ con fórmula de distancia .
  • Para que los círculos sean ortogonales necesitamos comprobar si
r1 * r1 + r2 * r2 = d * d
  • Si es cierto, entonces ambos círculos son ortogonales. De lo contrario no.

A continuación se muestra la implementación del enfoque anterior:
 

C++

// 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;
}

Java

// 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

Python3

# 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

C#

// 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

Javascript

<script>
    // Javascript program to check if two
    // circles are orthogonal or not 
     
    // Function to Check if the given
    // circles are orthogonal
    function orthogonality(x1, y1, x2, y2, r1, r2)
    {
 
        // calculating the square
        // of the distance between C1 and C2
        let 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
    let x1 = 4, y1 = 3;
    let x2 = 0, y2 = 1;
    let r1 = 2, r2 = 4;
   
    let f = orthogonality(x1, y1, x2,
                           y2, r1, r2);
   
    if (f)
        document.write("Given circles are orthogonal.");
    else
        document.write("Given circles are not orthogonal.");
 
// This code is contributed by divyesh072019.
</script>
Producción: 

Given circles are orthogonal.

 

Complejidad de tiempo: O(1)

Espacio Auxiliar: O(1)

Publicación traducida automáticamente

Artículo escrito por DiptayanBiswas y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *