Java 程序求圆弧段的面积(Program to find area of a Circular Segment)

在圆中,如果画一条弦,那么这条弦将整个圆分成两部分。圆的这两部分称为圆的段。较小的区域称为小段,较大的区域称为大段。

在下图中,弦 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)

如果您喜欢此文章,请收藏、点赞、评论,谢谢,祝您快乐每一天。

相关推荐
琢磨先生David6 分钟前
Java 垃圾回收机制:自动化内存管理的艺术与科学
java
岁忧31 分钟前
(nice!!!)(LeetCode 每日一题) 2561. 重排水果 (哈希表 + 贪心)
java·c++·算法·leetcode·go·散列表
我要成为c嘎嘎大王41 分钟前
【C++】类和对象(2)
开发语言·c++
阿华的代码王国44 分钟前
【Android】RecyclerView实现新闻列表布局(1)适配器使用相关问题
android·xml·java·前端·后端
码农BookSea1 小时前
自研 DSL 神器:万字拆解 ANTLR 4 核心原理与高级应用
java·后端
lovebugs1 小时前
Java并发编程:深入理解volatile与指令重排
java·后端·面试
慕y2741 小时前
Java学习第九十一部分——OkHttp
java·开发语言·学习
caisexi1 小时前
Windows批量启动java服务bat脚本
java·windows·python
NullPointerExpection1 小时前
win10 环境删除文件提示文件被使用无法删除怎么办?
java·ide·windows·win10
Techie峰1 小时前
【Java23种设计模式】:模板方法模式
java·设计模式·模板方法模式