函式模板
<valarray>

std::atan2

template<class T> valarray<T> atan2 (const valarray<T>& y, const valarray<T>& x);template<class T> valarray<T> atan2 (const valarray<T>& y, const T& x);template<class T> valarray<T> atan2 (const T& y, const valarray<T>& x);
計算valarray元素atan2
返回一個valarray,其中包含所有元素的主值反正切,順序相同。它計算的正切值是座標y/x的商,使用它們的符號來確定正確的象限。

該函式為xy中的每個元素呼叫一次(非限定的)atan2;如果其中一個是單個T值,則它用於所有呼叫。

此函式過載了cmath的atan2

引數

y
具有y座標的valarray或元素。
x
具有x座標的valarray或元素。
如果兩個引數都是valarray物件且它們的大小不匹配,則行為未定義。

返回值

具有y/x的反正切值的valarray物件。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// atan2 valarray example
#include <iostream>     // std::cout
#include <cstddef>      // std::size_t
#include <cmath>        // std::atan2
#include <valarray>     // std::valarray, std::atan2

int main ()
{
  double y[] = {0.0, 3.0, -2.0};
  double x[] = {-3.0, 3.0, -1.0};
  std::valarray<double> ycoords (y,3);
  std::valarray<double> xcoords (x,3);

  std::valarray<double> results = atan2 (ycoords,xcoords);

  std::cout << "results:";
  for (std::size_t i=0; i<results.size(); ++i)
    std::cout << ' ' << results[i];
  std::cout << '\n';

  return 0;
}

輸出

results: 3.14159 0.785398 -2.03444


另見