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)

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

相关推荐
invicinble2 分钟前
springboot的核心实现机制原理
java·spring boot·后端
人道领域10 分钟前
SSM框架从入门到入土(AOP面向切面编程)
java·开发语言
铅笔侠_小龙虾10 分钟前
Flutter 实战: 计算器
开发语言·javascript·flutter
2的n次方_28 分钟前
Runtime 执行提交机制:NPU 硬件队列的管理与任务原子化下发
c语言·开发语言
大模型玩家七七30 分钟前
梯度累积真的省显存吗?它换走的是什么成本
java·javascript·数据库·人工智能·深度学习
2501_944711431 小时前
JS 对象遍历全解析
开发语言·前端·javascript
CodeToGym1 小时前
【Java 办公自动化】Apache POI 入门:手把手教你实现 Excel 导入与导出
java·apache·excel
凡人叶枫1 小时前
C++中智能指针详解(Linux实战版)| 彻底解决内存泄漏,新手也能吃透
java·linux·c语言·开发语言·c++·嵌入式开发
Tony Bai1 小时前
再见,丑陋的 container/heap!Go 泛型堆 heap/v2 提案解析
开发语言·后端·golang
JMchen1231 小时前
Android后台服务与网络保活:WorkManager的实战应用
android·java·网络·kotlin·php·android-studio