Cライブラリ関数 -atan2()

C 标准库 - <math.h>C標準ライブラリ - <math.h>

説明

atan2()は C 標準ライブラリ<math.h>の中の関数で、2つのパラメータの逆正接を計算します。これらの2つのパラメータは、点の y 座標と x 座標を表します。atan2()この関数は、x軸から点 (x, y) までの角度をラジアン単位で返します。この関数は、単独で使用するatan()関数よりも強力です。なぜなら、x と y の符号を考慮するため、正しい象限を決定できるからです。

宣言

以下は atan2() 関数の宣言です。

#include <math.h>

double atan2(double y, double x);
float atan2f(float y, float x);
long double atan2l(long double y, long double x);

パラメータ

  • x-- x 軸座標を表す浮動小数点値。
  • y-- y 軸座標を表す浮動小数点値。

戻り値

  • 点 (x, y) の逆正接値をラジアン単位で返します。戻り値の範囲は [-π, π] です。

例

以下の例は、atan2() 関数の使い方を示しています。

例

#include <stdio.h>
#include <math.h>

#define PI 3.14159265

int main ()
{
   double x, y, ret, val;

   x = -7.0;
   y = 7.0;
   val = 180.0 / PI;

   ret = atan2 (y,x) * val;
   printf("x = %lf, y = %lf の逆正接", x, y);
   printf("は %lf 度\n", ret);
 
   return(0);
}
  • atan2(y, x)y / x の逆正接を計算し、y と x の符号を考慮して、角度の正しい象限を決定します。
  • 結果はラジアンで表され、範囲は [-π, π] です。
  • ラジアンの結果を180 / π掛けることで、度数に変換できます。

上記のプログラムをコンパイルして実行してみましょう。次の結果が得られます。

x = -7.000000, y = 7.000000 的反正切是 135.000000 度

象限の決定

次の例は、atan2() を使用して点が存在する象限を決定する方法を示しています。

例

#include <stdio.h>
#include <math.h>

void print_quadrant(double y, double x) {
    double angle = atan2(y, x);
    printf("Point (%f, %f) is in quadrant: ", x, y);
    if (angle > 0 && angle < M_PI / 2) {
        printf("I\n");
    } else if (angle > M_PI / 2 && angle < M_PI) {
        printf("II\n");
    } else if (angle < 0 && angle > -M_PI / 2) {
        printf("IV\n");
    } else {
        printf("III\n");
    }
}

int main() {
    print_quadrant(1.0, 1.0);  // I
    print_quadrant(1.0, -1.0); // II
    print_quadrant(-1.0, -1.0); // III
    print_quadrant(-1.0, 1.0); // IV

    return 0;
}

コードの解説:

  • 関数print_quadrant()は y と x のパラメータを受け取り、それらの逆正接を計算し、結果に基づいて点が存在する象限を決定します。
  • コード内でatan2(y, x)逆正接を計算し、角度の範囲に基づいて象限を決定します。

上記のプログラムをコンパイルして実行してみましょう。次の結果が得られます。

Point (1.000000, 1.000000) is in quadrant: I
Point (-1.000000, 1.000000) is in quadrant: II
Point (-1.000000, -1.000000) is in quadrant: III
Point (1.000000, -1.000000) is in quadrant: IV

エラー処理

  • atan2()すべての実数入力に対して有効であるため、追加のエラー処理は必要ありません。
  • 関数は設定せずerrno、NaN も返しません。

まとめ

atan2()関数は点 (x, y) の逆正接を計算するために使用され、2次元平面上の角度計算を処理する強力なツールです。それと比較すると、atan()それはすべての象限の角度を正しく処理し、正確な結果を返します。atan2()コードを簡素化し、正確性を向上させることができます。

C 标准库 - <math.h>C標準ライブラリ - <math.h>

その他の拡張