C言語関係掲示板

過去ログ

No.34. 角度を返す


はじめまして。
大学で最近プログラムを勉強しはじめました。
質問なんですが、
sinやtanの値を角度に直す関数って無いんでしょうか?
自分でこのような関数を作ろうと思ったけど力足らずで。。。
みなさん、アドバイスよろしくお願いします。


> sinやtanの値を角度に直す関数って無いんでしょうか?

うーん、見当たりませんね。
sin も cos も0度から360度のあいだに同じ値が存在しますしね。
どうしてもというのなら、0度から360度まで1度おきにループでまわして
実際にsin や cos を計算し、与えられた sin値 や cos値とほぼ一致した
角度を答えとするといいのかもしれません。
#ほぼ一致と書いたのは、実数は誤差が生じるので全く等しいということは
ないからです。


>sinやtanの値を角度に直す関数って無いんでしょうか?

#include <math.h>
double acos(double x);
 xのアークコサインを返す.xが[-1,+1]の範囲にないときはエラー.
double asin(double x);
 xのアークサインを返す.xが[-1,+1]の範囲にないときはエラー.
double atan(double x)
 xのアークタンジェントを返す.

これじゃだめ?


そういえば大昔、アークサインって習いましたっけ。
asin、acos、atanってそうやって使うんですね。今ごろわかりました。
すみません、数学は大の苦手でお情けで点を頂いていたもので・・・。

つまり、次のようにするとsin値から角度が求められるわけですね。

#include <stdio.h>
#include <math.h>
int main(void)
{
  double result1,result2;
  double angle,r_angle;

  printf("角度の指定 ");
  scanf("%lf",&angle);

  result1 = sin(angle*3.14159/180.0);
  printf("%lf度の SIN値=%lf\n", angle, result1);

  result2 = asin(result1);
  r_angle = result2*180.0/3.14159;
  printf("SIN値%lfの角度=%lf度\n",result1,r_angle);

  return 0;
}

戻る


「初心者のためのポイント学習C言語」 Last modified:2001.8.8
Copyright(c) 2000-2002 TOMOJI All Rights Reserved