C++ Valarray::atan2 函式



C++ Valarray::atan2() 函式計算 valarray 中每個元素的 (y/x) 值的反正切,並返回一個包含所有元素反正切的 valarray。其中 y 是 y 座標的比例,x 是 x 座標的比例。

cmath 的 atan2() 函式在這個函式中被過載,它對每個元素呼叫一次。它使用引數的符號來確定合適的象限。

  • 如果 y 和 x 具有相同的 valarray 大小,則該函式計算 y 和 x 中每對對應值的反正切。
  • 如果 y 是 valarray 而 x 是值,則該函式計算 y 的每個元素與 x 配對的反正切。
  • 如果 x 是 valarray 而 y 是值,則該函式計算 y 與 x 的每個元素配對的反正切。

語法

以下是 C++ Valarray::atan2 函式的語法:

atan2 (const valarray<T>& y, const valarray<T>& x);
atan2 (const valarray<T>& y, const T& x);
atan2 (const T& y, const valarray<T>& x);

引數

  • x − 包含型別為單目函式 abs 定義的元素。
  • y − 一個 valarray 元素,包含 y 座標。

示例

示例 1

讓我們來看下面的例子,我們將使用 atan2() 函式並檢索輸出。

#include <iostream>
#include <valarray>
using namespace std;

int main() {
   double y[] = { 0.4, 1.2, -1.0 };
   double x[] = { 0.5, 1.3, -1.0 };
   valarray<double> ycoords(y, 2);
   valarray<double> xcoords(x, 2);
   valarray<double> result = atan2(ycoords, xcoords);
   cout << "Result:";
   
   for (size_t i = 0; i < result.size(); ++i)
      cout << ' ' << result[i];
   cout << '\n';
   return 0;
}

輸出

讓我們編譯並執行上面的程式,這將產生以下結果:

Result: 0.674741 0.745419

示例 2

考慮另一種情況,我們將使用 atan2() 函式並檢索輸出。

#include <iostream>
#include <valarray>
using namespace std;

int main (){
   valarray<double> y = {4, 10, 9};
   valarray<double> x = {12, 22, 14};
   valarray<double> result1 = atan2(y, x);
   cout<<"\natan2(y, x) returns: ";
   
   for(int i = 0; i < result1.size(); i++)
      cout<<result1[i]<<" ";  
   return 0;
}

輸出

讓我們編譯並執行上面的程式,這將產生以下結果:

atan2(y, x) Return: 0.321751 0.426627 0.571337  

示例 3

在下面的示例中,我們將使用 atan2() 函式並以弧度檢索輸出。

#include <iostream>
#include <cmath>
#define PI 3.141592654
using namespace std;

int main() {
   double result;
   int x = -12;
   float y = 31.6;
   result = atan2(y, x);
   cout << "atan2(y/x) = " << result << " radians" << endl;
   return 0;
}

輸出

讓我們編譯並執行上面的程式,這將產生以下結果:

atan2(y/x) = 1.93372 radians

示例 4

以下是一個示例,我們將使用 atan2() 函式並以度數檢索輸出。

#include <iostream>
#include <cmath>
#define PI 3.141592654
using namespace std;

int main() {
   double result;
   int x = -12;
   float y = 31.6;
   result = atan2(y, x);
   cout << "atan2(y/x) = " << result * (180 / PI) << " degrees";
   return 0;
}

輸出

讓我們編譯並執行上面的程式,這將產生以下結果:

atan2(y/x) = 110.794 degrees
廣告
© . All rights reserved.