从圆弧区域中寻找中心角

时间:2012-07-12 20:50:20

标签: center trigonometry geometry angle segment

我试图根据2个百分比将一个圆分成2个部分。像饼图一样,但创建具有单个垂直切片的片段。 我已经找到了这个面积的公式,但是当我知道半径和面积时,却无法解决C(中心角):

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

一旦我得到C,我可以使用cos,tan和R(半径)来找到圆上的x和y点。

起初我以为我可以简单地乘以180 *(smallPercent / 50),但我意识到这是'不'。

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:0)

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

您已经知道圆的半径,它的面积(PI * r平方)以及您要构建的线段的面积(smallerPercentage / 100 * areaOfCircle)。

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

enter image description here

然而一切都没有丢失。

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

因此,唯一的解决方案是开始在Θ处进行有条理的猜测,看看计算的面积是否与您期望的一致(在一定的公差范围内)。

并且假设百分比将小于50(并且大于0),则:0&lt;角度&lt; 180。

所以,我会在90度时做出我的第一次猜测。如果该区域在45处再次猜测太大,则尝试135.每次将大小减半并从前一个角度加上或减去它。继续缩小范围,直到得到的区域在您所期望的区域范围内。不到10个猜测应该会让你到那里。

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

我希望这会有所帮助。


在我正确理解你要做的事情之前,这是我原来的答案:

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

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

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