给定一个圆圈,里面有一个和弦。给出了弦的长度和圆的半径。任务是找到和弦到中心的最短距离。
例子:
Input: r = 4, d = 3
Output: 3.7081
Input: r = 9.8, d = 7.3
Output: 9.09492
方法:
- 我们知道从和弦的中心放下的线段将和弦二等分。该线是弦的垂直平分线,我们知道垂直距离是最短的距离,所以我们的任务是找到此垂直平分线的长度。
- 令圆的半径= r
- 弦长= d
- 因此,在OBC三角形中,
根据毕达哥拉斯定理,
OB ^ 2 +(d / 2)^ 2 = r ^ 2
因此, OB =√(r ^ 2 – d ^ 2/4)
- 所以,
下面是上述方法的实现:
C++
// C++ program to find
// the shortest distance from
// chord to the centre of circle
#include
using namespace std;
// Function to find the shortest distance
void shortdis(double r, double d)
{
cout << "The shortest distance "
<< "from the chord to centre "
<< sqrt((r * r) - ((d * d) / 4))
<< endl;
}
// Driver code
int main()
{
double r = 4, d = 3;
shortdis(r, d);
return 0;
}
Java
// Java program to find
// the shortest distance from
// chord to the centre of circle
class GFG
{
// Function to find the shortest distance
static void shortdis(double r, double d)
{
System.out.println("The shortest distance "
+ "from the chord to centre "
+ (Math.sqrt((r * r) - ((d * d) / 4))));
}
// Driver code
public static void main(String[] args)
{
double r = 4, d = 3;
shortdis(r, d);
}
}
/* This code contributed by PrinciRaj1992 */
Python3
# Python program to find
# the shortest distance from
# chord to the centre of circle
# Function to find the shortest distance
def shortdis(r, d):
print("The shortest distance ",end="");
print("from the chord to centre ",end="");
print(((r * r) - ((d * d) / 4))**(1/2));
# Driver code
r = 4;
d = 3;
shortdis(r, d);
# This code has been contributed by 29AjayKumar
C#
// C# program to find
// the shortest distance from
// chord to the centre of circle
using System;
class GFG
{
// Function to find the shortest distance
static void shortdis(double r, double d)
{
Console.WriteLine("The shortest distance "
+ "from the chord to centre "
+ (Math.Sqrt((r * r) - ((d * d) / 4))));
}
// Driver code
public static void Main()
{
double r = 4, d = 3;
shortdis(r, d);
}
}
// This code is contributed by AnkitRai01
PHP
Javascript
输出:
The leshortest distance from the chord to centre 3.7081