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)

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

相关推荐
MacroZheng15 分钟前
Claude Code官方桌面端正式发布,夯爆了!
java·人工智能·后端
虚无境24 分钟前
如何编写一个SpringBoot项目告警推送的Starter
java·prometheus·webhook
NE_STOP15 小时前
Vide Coding--AI编程工具的选择
java
LDR00616 小时前
Type-C 快充全面升级!LDR6601 赋能个人护理便携电机,重塑剃须刀 / 理发器新体验
c语言·开发语言
雪碧聊技术16 小时前
Tree.js是什么?一文讲透
开发语言·javascript·ecmascript
码云数智-园园16 小时前
C++20 Modules 模块详解
java·开发语言·spring
程序员黑豆16 小时前
JDK 下载安装与配置详细教程
java·前端·ai编程
小宇宙Zz16 小时前
Maven依赖冲突
java·服务器·maven
swordbob16 小时前
NIO的channel中什么是 fd(File Descriptor,文件描述符)
java·开发语言·nio