Advertisement

c语言/C++编程题关于运动的圆沿正多边形扫过的面积问题

阅读量:

题目描述

设平面内有一个圆形物体C其半径为R将该圆形物体置于平面上使其圆心O沿着一个正多边形路径进行运动其中该多边形每条边长度均为E且有N条边所形成的图形称为正N边形求解该情况下圆形物体C所形成的总面积S其中重复覆盖区域只计算一次

输入

第1行T表示共有T组测试用例(其中T\leq 2^{5})。接下来的每组测试用例都代表一个独立的实验场景。每个实验场景包含三个参数:输入特征的数量R(不超过2),环境变量的数量E(不超过4),以及节点数量N(取值范围为3到7)。

输出

每一行输出保留5位小数,表示圆在运动过程中扫过的面积。

样例输入

复制代码
    1
    1 10 4

样例输出

复制代码
14159
复制代码
复制代码
    思路:把总面积分为三部分,正多边形外分为两部分,n条边的面积为n个矩形e * n * r,
复制代码
n个顶点的n个扇形恰好为一个圆,
复制代码

在正多边形内部的一小部分区域中进行分析,在比较已知圆与该正多边形内接圆的半径时即可得出结论;对于一个具有n条等长且相等的角度的平面图形来说,在其内部绘制一个最大内切圆时其半径计算公式可表示为r = e/(2·tan(π/n))(其中e代表该平面图形每条边上所对应的长度单位长度)

复制代码
AI写代码AI写代码

全部评论 (0)

还没有任何评论哟~