在圆中,如果画一条弦,那么这条弦将整个圆分成两部分。圆的这两部分称为圆的段。较小的区域称为小段,较大的区域称为大段。
在下图中,弦 AB 将圆分成小段和大段。
已知圆的半径和构成小线段的角度。我们需要求出两个线段的面积。
示例:
输入:
半径 = 21.0
角度 = 120.0
输出:
小段面积 270.855
大段面积 1114.59
输入:
半径 = 10.0
角度 = 90.0
输出:
小段面积 28.5397
大段面积 285.619
片段面积:
为此,我们将弦的端点与圆心连接起来,形成一个扇形,该扇形在中心处对着某个“角度”。并从弦 AB 上的圆心画一条垂线。根据三角形全等,我们得到 ? AOP = ? BOP = 1/2(角度)。
线段面积公式:
线段面积 = 扇形面积 - 三角形 OAB 面积
= pi * r 2 * (角度/360) -
三角形 OAB 面积
有关扇区面积公式的详细信息,请参阅:
Javascript 扇形的面积:Javascript 扇形的面积(Area of a Circular Sector)-CSDN博客
PHP 扇形的面积:PHP 扇形的面积(Area of a Circular Sector)-CSDN博客
C# 扇形的面积:C# 扇形的面积(Area of a Circular Sector)-CSDN博客
Python 扇形的面积:Python 扇形的面积(Area of a Circular Sector)-CSDN博客
Java 扇形的面积:Java 扇形的面积(Area of a Circular Sector)-CSDN博客
C++ 扇形的面积:C++ 扇形的面积(Area of a Circular Sector)-CSDN博客
在上图中,假设扇区形成的角度 = X,
因此? AOP = ? BOP = X/2
三角形 AOB 的面积= 1/2 * 底边 * 高
= 1/2 * AB * OP
现在在三角形 AOP 中,根据三角学
Cos(X/2) = OP/AO 即 OP = AO * Cos(X/2)
OP = r * Cos(X/2)
Sin(X/2) = AP/AO 即 AP = AO * Sin(X/2)
AP = r * Sin(X/2)
所以,底边= AB = AP + PB
= 2 * AP
= 2 * r * Sin(X/2)高= OP = r * Cos(X/2)三角形面积= 1/2 * (2 * r * Sin(X/2)) * (r * Cos(X/2))
= 1/2 * r 2 * Sin(X)
[使用恒等式 2 * Sin(A) * Cos(A)]
= Sin(2 * A))
因此线段面积= pi * r 2 * (角度/360) - 1/2 * r 2 * Sin(角度)
示例代码:
// Java Program to find area of
// segment of a circle
class GFG {
static float pi = 3.14159f;
static float area_of_segment(float radius,
float angle)
{
// Calculating area of sector
float area_of_sector = pi *
(radius * radius) * (angle / 360);
// Calculating area of triangle
float area_of_triangle =
(float)1 / 2 * (radius * radius) *
(float)Math.sin((angle * pi) / 180);
return area_of_sector - area_of_triangle;
}
// Driver Function
public static void main(String[] args)
{
float radius = 10.0f, angle = 90.0f;
System.out.println("Area of minor segment = " +
area_of_segment(radius, angle));
System.out.println("Area of major segment = " +
area_of_segment(radius, (360 - angle)));
}
}
// This code is contributed by Anant Agarwal.
输出 :
小段面积 = 28.5397
大段面积 = 285.619
时间复杂度: O(1)
辅助空间: O(1)
如果您喜欢此文章,请收藏、点赞、评论,谢谢,祝您快乐每一天。