## C++ 中的反正切函数 atan 和 atan2### 简介在三角函数中,反正切函数是正切函数的反函数。简单来说,对于给定的一个角的正切值,反正切函数可以帮你找到这个角。C++ 提供了两个函数来计算反正切值:`atan` 和 `atan2`。### atan 函数
功能:
计算一个角度的反正切值,返回弧度制。
语法:
```c++
#include double atan(double x);
float atan(float x);
long double atan(long double x);
```
参数:
`x`: 一个浮点数,表示正切值。
返回值:
返回值为一个浮点数,表示 `x` 的反正切值,单位是弧度,取值范围在 [-π/2, π/2] 之间。
示例:
```c++
#include
#include int main() {double x = 1.0;double result = atan(x);std::cout << "atan(" << x << ") = " << result << " radians" << std::endl;std::cout << "atan(" << x << ") = " << result
180 / M_PI << " degrees" << std::endl;return 0;
}
```
输出:
```
atan(1) = 0.785398 radians
atan(1) = 45 degrees
```### atan2 函数
功能:
根据给定的 y 和 x 坐标计算角度的反正切值,返回弧度制。
语法:
```c++
#include double atan2(double y, double x);
float atan2(float y, float x);
long double atan2(long double y, long double x);
```
参数:
`y`: 一个浮点数,表示点的 y 坐标。
`x`: 一个浮点数,表示点的 x 坐标。
返回值:
返回值为一个浮点数,表示 (x, y) 向量与 x 轴正方向的夹角,单位是弧度,取值范围在 [-π, π] 之间。
优点:
`atan2` 函数相比 `atan` 函数的优势在于,它可以根据坐标的符号判断角度所在的象限,从而返回更精确的角度值。
示例:
```c++
#include
#include int main() {double x = -1.0;double y = 1.0;double result = atan2(y, x);std::cout << "atan2(" << y << ", " << x << ") = " << result << " radians" << std::endl;std::cout << "atan2(" << y << ", " << x << ") = " << result
180 / M_PI << " degrees" << std::endl;return 0;
}
```
输出:
```
atan2(1, -1) = 2.35619 radians
atan2(1, -1) = 135 degrees
```### 总结
当只需要计算一个正切值的反正切时,可以使用 `atan` 函数。
当需要根据点的坐标计算角度时,应该使用 `atan2` 函数,因为它能提供更精确的结果。
两者返回值都是弧度制,需要转换成角度需要乘以 `180 / M_PI`。
C++ 中的反正切函数 atan 和 atan2
简介在三角函数中,反正切函数是正切函数的反函数。简单来说,对于给定的一个角的正切值,反正切函数可以帮你找到这个角。C++ 提供了两个函数来计算反正切值:`atan` 和 `atan2`。
atan 函数**功能:** 计算一个角度的反正切值,返回弧度制。**语法:**```c++
include double atan(double x);
float atan(float x);
long double atan(long double x);
```**参数:*** `x`: 一个浮点数,表示正切值。**返回值:*** 返回值为一个浮点数,表示 `x` 的反正切值,单位是弧度,取值范围在 [-π/2, π/2] 之间。**示例:**```c++
include
include int main() {double x = 1.0;double result = atan(x);std::cout << "atan(" << x << ") = " << result << " radians" << std::endl;std::cout << "atan(" << x << ") = " << result * 180 / M_PI << " degrees" << std::endl;return 0;
}
```**输出:**```
atan(1) = 0.785398 radians
atan(1) = 45 degrees
```
atan2 函数**功能:** 根据给定的 y 和 x 坐标计算角度的反正切值,返回弧度制。**语法:**```c++
include double atan2(double y, double x);
float atan2(float y, float x);
long double atan2(long double y, long double x);
```**参数:*** `y`: 一个浮点数,表示点的 y 坐标。
* `x`: 一个浮点数,表示点的 x 坐标。**返回值:*** 返回值为一个浮点数,表示 (x, y) 向量与 x 轴正方向的夹角,单位是弧度,取值范围在 [-π, π] 之间。**优点:*** `atan2` 函数相比 `atan` 函数的优势在于,它可以根据坐标的符号判断角度所在的象限,从而返回更精确的角度值。**示例:**```c++
include
include int main() {double x = -1.0;double y = 1.0;double result = atan2(y, x);std::cout << "atan2(" << y << ", " << x << ") = " << result << " radians" << std::endl;std::cout << "atan2(" << y << ", " << x << ") = " << result * 180 / M_PI << " degrees" << std::endl;return 0;
}
```**输出:**```
atan2(1, -1) = 2.35619 radians
atan2(1, -1) = 135 degrees
```
总结* 当只需要计算一个正切值的反正切时,可以使用 `atan` 函数。
* 当需要根据点的坐标计算角度时,应该使用 `atan2` 函数,因为它能提供更精确的结果。
* 两者返回值都是弧度制,需要转换成角度需要乘以 `180 / M_PI`。