📜  C++中的valarray atan2()函数

📅  最后修改于: 2021-05-30 04:39:03             🧑  作者: Mango

atan2()函数在valarray头文件中定义。此函数计算valarray中每个元素的(y / x)值的反正切,并返回一个valarray,其中包含所有元素的反正切。其中y是y坐标的比例,x是x坐标的比例。

句法:

std::valarray res = atan2 (y-coords, x-coords)

参数:该函数接受两个必填参数,即X坐标和Y坐标。

注意:如果两个参数都是valarray对象,并且它们的大小不匹配,则它们的行为为undefined。

返回:此函数返回一个valarray,其中包含所有元素的反正切。

下面的程序说明了上述函数:

范例1:-

// atan2 valarray example
// programs illustrate the atan2() function:
  
#include 
#include 
using namespace std;
  
int main()
{
    // intilaize both the array X and Y coords
    double y[] = { 0.0, 3.0, -2.0 };
    double x[] = { -3.0, 3.0, -1.0 };
  
    // intilaize both the valarray X and Y coords
    valarray ycoords(y, 3);
    valarray xcoords(x, 3);
  
    // store results in valarray res
    valarray res = atan2(ycoords, xcoords);
  
    // print results of atan2() function
    cout << "results:";
    for (size_t i = 0; i < res.size(); ++i)
        cout << ' ' << res[i];
    cout << '\n';
  
    return 0;
}

输出:

results: results: 3.14159 0.785398 -2.03444

示例2:

// atan2 valarray example
// programs illustrate the atan2() function:
  
#include 
#include 
using namespace std;
  
int main()
{
    // intilaize both the array X and Y coords
    double y[] = { 4.0, 5.6, -2.8, 7.3 };
    double x[] = { 5.0, -1.5, 7.0, -0.8 };
  
    // intilaize both the valarray X and Y coords
    valarray ycoords(y, 4);
    valarray xcoords(x, 4);
  
    // store results in valarray res
    valarray res = atan2(ycoords, xcoords);
  
    // print results of atan2() function
    cout << "results:";
    for (size_t i = 0; i < res.size(); ++i)
        cout << ' ' << res[i];
    cout << '\n';
  
    return 0;
}

输出:

results: 0.674741 1.83251 -0.380506 1.67995

示例3:-错误和异常:当将大小不同的valarray对象作为参数传递时,该函数返回任何匹配函数来调用错误。

// atan2 valarray example
// programs illustrate the atan2() function:
  
#include 
#include 
using namespace std;
  
int main()
{
    // intilaize both the array X and Y coords
    double y[] = { -2.8, 7.3 };
    float x[] = { 5.0, -0.8, 3.2, 5, 1 };
  
    // intilaize both the valarray X and Y coords
    valarray ycoords(y, 2);
    valarray xcoords(x, 4);
  
    // store results in valarray res
    valarray res = atan2(ycoords, xcoords);
  
    // print results of atan2() function
    cout << "results:";
    for (size_t i = 0; i < res.size(); ++i)
        cout << ' ' << res[i];
    cout << '\n';
  
    return 0;
}

输出:

prog.cpp: In function 'int main()':
prog.cpp:14:48: error: no matching function for call to 'atan2(std::valarray&, std::valarray&)'
   valarray res = atan2 (ycoords, xcoords);
                                                ^
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程”