c语言/c++生成代码 计算第一个三维向量与第二个三维向量之间的夹角,夹角范围在-360~360
时间: 2024-03-23 09:36:09 浏览: 101
以下是 C++ 代码示例:
```cpp
#include <iostream>
#include <cmath>
using namespace std;
double angle_between_vectors(double a[], double b[]) {
double dot_product = a[0]*b[0] + a[1]*b[1] + a[2]*b[2];
double magnitude_a = sqrt(a[0]*a[0] + a[1]*a[1] + a[2]*a[2]);
double magnitude_b = sqrt(b[0]*b[0] + b[1]*b[1] + b[2]*b[2]);
double cos_theta = dot_product / (magnitude_a * magnitude_b);
double theta = acos(cos_theta);
if (isnan(theta)) {
return 0.0;
} else {
return theta * 180.0 / M_PI;
}
}
// Example usage
int main() {
double a[3] = {1, 2, 3};
double b[3] = {4, 5, 6};
double theta = angle_between_vectors(a, b);
cout << theta << endl;
return 0;
}
```
这个函数接受两个三维向量作为输入,并返回它们之间的夹角,夹角的范围在 -360 到 360 度之间。如果两个向量重合,夹角为 0 度。注意,C++ 中的 `acos()` 函数返回的是弧度值,因此需要将其乘以 180/π 转换为角度值。
阅读全文