计算两个向量之间角度的函数 c++
时间: 2024-02-18 09:01:22 浏览: 20
以下是计算两个向量之间夹角的 C++ 函数示例:
```c++
#include <cmath>
#include <vector>
double vectorAngle(std::vector<double> a, std::vector<double> b) {
double dotProduct = a[0] * b[0] + a[1] * b[1] + a[2] * b[2];
double aLength = sqrt(a[0] * a[0] + a[1] * a[1] + a[2] * a[2]);
double bLength = sqrt(b[0] * b[0] + b[1] * b[1] + b[2] * b[2]);
double cosAngle = dotProduct / (aLength * bLength);
double angle = acos(cosAngle) * 180 / M_PI; // 弧度转角度
return angle;
}
```
在这个函数中,我们假设输入的向量是三维的,分别用 `std::vector<double>` 类型表示。函数先计算两个向量的点积,然后分别计算两个向量的长度。最后,函数根据点积和向量长度计算出两个向量之间的夹角,使用弧度制转换为角度制后返回结果。
调用这个函数时,可以传入两个向量的坐标,例如:
```c++
std::vector<double> a = {1, 2, 3};
std::vector<double> b = {4, 5, 6};
double angle = vectorAngle(a, b);
```
其中,向量 `a` 和 `b` 分别是坐标为 $(1,2,3)$ 和 $(4,5,6)$ 的向量,`angle` 变量将保存它们之间的夹角。