给定两个圆,圆的中心为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.