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)

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

相关推荐
雨中飘荡的记忆32 分钟前
大流量下库存扣减的数据库瓶颈:Redis分片缓存解决方案
java·redis·后端
心之语歌3 小时前
基于注解+拦截器的API动态路由实现方案
java·后端
华仔啊4 小时前
Stream 代码越写越难看?JDFrame 让 Java 逻辑回归优雅
java·后端
ray_liang4 小时前
用六边形架构与整洁架构对比是伪命题?
java·架构
Ray Liang6 小时前
用六边形架构与整洁架构对比是伪命题?
java·python·c#·架构设计
Java水解6 小时前
Java 中间件:Dubbo 服务降级(Mock 机制)
java·后端
SimonKing10 小时前
OpenCode AI辅助编程,不一样的编程思路,不写一行代码
java·后端·程序员
FastBean10 小时前
Jackson View Extension Spring Boot Starter
java·后端
Seven9711 小时前
剑指offer-79、最⻓不含重复字符的⼦字符串
java
皮皮林55121 小时前
Java性能调优黑科技!1行代码实现毫秒级耗时追踪,效率飙升300%!
java