📜  使用 Inradius 和 Circumradius 计算三角形的 Incenter 和 Circumcenter 之间的距离

📅  最后修改于: 2021-10-23 08:48:26             🧑  作者: Mango

给定两个整数r和表示分别Inradius外接球的长度R,该任务是计算内心和外心之间的距离d。

半径 正三角形 ( ABC ) 的内半径 ( r ) 是内圆的半径(以 l 为中心),它是适合三角形内部的最大圆。
Circumradius:三角形的外接圆半径(R)是该三角形的外接圆(以O为圆心)的半径。

例子:

方法:
该问题可以使用几何学中的欧拉定理来解决,该定理指出三角形的内心和外心之间的距离可以通过以下公式计算:

下面是上述方法的实现:

C++14
// C++14 program for the above approach
#include 
using namespace std;
 
// Function returns the required distance
double distance(int r, int R)
{
    double d = sqrt(pow(R, 2) -
                       (2 * r * R));
                             
    return d;
}
 
// Driver code
int main()
{
     
    // Length of Inradius
    int r = 2;
     
    // Length of Circumradius
    int R = 5;
 
    cout << (round(distance(r, R) * 100.0) / 100.0);
}
 
// This code is contributed by sanjoy_62


Java
// Java program for the above approach
import java.util.*;
 
class GFG{
     
// Function returns the required distance
static double distance(int r,int R)
{
    double d = Math.sqrt(Math.pow(R, 2) -
                         (2 * r * R));
                          
    return d;
}
 
// Driver code
public static void main(String[] args)
{
     
    // Length of Inradius
    int r = 2;
     
    // Length of Circumradius
    int R = 5;
 
    System.out.println(Math.round(
        distance(r, R) * 100.0) / 100.0);
}
}
 
// This code is contributed by offbeat


Python3
# Python3 program for the above approach
import math
 
# Function returns the required distance
def distance(r,R):
 
    d = math.sqrt( (R**2) - (2 * r * R))
     
    return d
 
# Driver Code
 
# Length of Inradius
r = 2
 
# Length of Circumradius
R = 5
 
print(round(distance(r,R),2))


C#
// C# program for the above approach
using System;
 
class GFG{
     
// Function returns the required distance
static double distance(int r, int R)
{
    double d = Math.Sqrt(Math.Pow(R, 2) -
                         (2 * r * R));
                         
    return d;
}
 
// Driver code
public static void Main(string[] args)
{
     
    // Length of Inradius
    int r = 2;
     
    // Length of Circumradius
    int R = 5;
     
    Console.Write(Math.Round(
        distance(r, R) * 100.0) / 100.0);
}
}
 
// This code is contributed by rutvik_56


Javascript


输出:
2.24

时间复杂度: O(1)
辅助空间: O(1)

如果您希望与专家一起参加现场课程,请参阅DSA 现场工作专业课程学生竞争性编程现场课程