2

円を 2 つのパーセンテージに基づいて 2 つのセグメントに分割しようとしています。円グラフに似ていますが、単一の垂直スライスでセグメントを作成します。この面積の式を見つけましたが、半径と面積がわかっているときに C (中心角) を解くことができませんでした。

(R(二乗) / 2) * ( ((pi/180)* C) - sin(C) )

CI を取得したら、cos、tan、R(radius) を使用して、円上の x 点と y 点を見つけることができます。

最初は単純に 180 * (smallerPercent / 50) を乗算できると思っていましたが、それは「いいえ」であることに気付きました。

4

2 に答える 2

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;
}
于 2013-07-10T03:13:35.370 に答える