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
广告