【问题标题】:Finding a central angle from a circle segment area求圆弧区域的圆心角
【发布时间】:2012-07-12 17:05:23
【问题描述】:

我正在尝试根据 2 个百分比将一个圆圈分成 2 个段。类似于饼图,但使用单个垂直切片创建段。 我找到了这个面积公式,但是当我知道半径和面积时,我无法求解 C(中心角):

(R(平方) / 2) * ( ((pi/180)* C) - sin(C) )

得到 C 后,我可以使用 cos、tan 和 R(radius) 在圆上找到我的 x 和 y 点。

起初我以为我可以简单地乘以 180 * (smallerPercent / 50),但我意识到这是一个“不”。

【问题讨论】:

    标签: center trigonometry geometry angle segment


    【解决方案1】:

    这是牛顿法的一个很好的应用。下面的 C 程序可以很容易地修改为 解决这个问题。您可以更改它以计算所需面积占面积的百分比 圆,或单独计算所需面积并输入。

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    double chordangle(double r,double a)
    {
      double x = a/2.0;
      do{
        x = ((x * r * r / M_PI) - (sin(x) * r * r / 2.0) - a ) / 
          (r * r / M_PI - (r * r / 2.0) * cos(x));
      }while(((x * r * r / M_PI) - (sin(x) * r * r / 2.0 ) - a) > 1e-11);
      return x;
    }
    
    int main()
    {
      double a,r;
      printf("Enter radius: ");
      if(scanf("%lf",&r)!=1)
        {
      printf("You must enter a number.\n");
      exit(1);
        }
      printf("Enter desired area of slice: ");
      if(scanf("%lf",&a)!=1)
        {
          printf("You must enter a number.\n");
          exit(1);
        }
      printf("The angle in radians is %lf.\n",chordangle(r,a));
      printf("The angle in degrees is %lf.\n",chordangle(r,a)*180.0/M_PI);      
      return 0;
    }
    

    【讨论】:

      【解决方案2】:

      我已经更新了这个答案(原文在最底部)。

      您已经知道圆的半径、面积(PI * r 平方)和您尝试构建的线段的面积(smallerPercentage / 100 * areaOfCircle)。

      如果我正确理解问题,没有公式可以计算出创建给定区域和半径的线段所需的角度。

      然而一切都没有丢失。

      如果您知道角度,您还可以使用已有的公式计算出面积。 A = 0.5 * r 平方 * ( ((PI/180) * Θ) - sin(Θ)) 其中 Θ 是角度。

      因此,唯一的解决方案是开始对 Θ 进行有条理的猜测,看看计算出的面积是否与您的预期相符(在一定的容差范围内)。

      假设百分比将小于 50(且大于 0),则:0

      所以,我的第一个猜测是 90 度。如果面积太大,请再次猜测 45,太小尝试 135。每次将大小减半,并从前一个角度加上或减去它。继续缩小范围,直到您获得的区域在您期望的区域的容差范围内。少于 10 次猜测应该可以帮助您。

      我认为这被称为“1/4 Tank 油尺问题”:见:http://mathforum.org/library/drmath/view/61752.html

      我希望这会有所帮助。


      在我正确理解您要做什么之前,这是我的原始答案:

      我不确定我是否完全理解您想要实现的目标,但您可以像这样计算出您想要的角度(以度为单位):

      smallAngle = 360/100 * smallerPercentage;
      largeAngle = 360 - smallAngle;
      

      而且您总是可以将度数乘以 (PI/180) 得到弧度。

      【讨论】:

      • 这是用于标准饼图的内容,但我认为 user1521972 正在寻找一个垂直切片(不一定穿过中心),在这两个部分中给出所需的百分比。
      • 这里有一个在线计算器可能会有所帮助:handymath.com/cgi-bin/arc18.cgi?submit=Entry
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-11-23
      • 2011-03-09
      • 1970-01-01
      • 2014-05-12
      • 2011-05-10
      • 1970-01-01
      • 2014-11-20
      相关资源
      最近更新 更多