📜  检查两个给定的圆是否正交

📅  最后修改于: 2021-05-31 22:34:29             🧑  作者: Mango

给定两个圆,圆的中心为C1(x1,y1)和C2(x2,y2)半径为r1和r2 ,任务是检查两个圆是否正交。
如果两条曲线的交角为直角,则称它们为正交,即两条交点处的切线垂直。

上面两个圆是正交的

例子:

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

方法:

  • 用距离公式找到两个圆心“ d”之间的距离。
  • 为了使圆正交,我们需要检查
r1 * r1 + r2 * r2 = d * d
  • 如果为真,则两个圆都是正交的。否则没有。

下面是上述方法的实现:

C++
// C++ program to check if two
// circles are orthogonal or not
 
#include 
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


输出:
Given circles are orthogonal.