写一个c++获取两向量间夹角
时间: 2024-06-02 22:13:53 浏览: 8
#include <stdio.h>
#include <math.h>
#define PI 3.14159265358979323846
int main()
{
double x1, y1, x2, y2;
printf("请输入第一个向量的坐标x1,y1:");
scanf("%lf,%lf", &x1, &y1);
printf("请输入第二个向量的坐标x2,y2:");
scanf("%lf,%lf", &x2, &y2);
double dot_product = x1 * x2 + y1 * y2; //向量点积
double len1 = sqrt(x1 * x1 + y1 * y1); //向量1的模长
double len2 = sqrt(x2 * x2 + y2 * y2); //向量2的模长
double cos_theta = dot_product / (len1 * len2); //余弦值
double theta = acos(cos_theta); //角度值
printf("两向量的夹角为:%f度\n", theta * 180 / PI);
return 0;
}
相关问题
c++求两向量求夹角代码
以下是求两个向量夹角的 C 代码:
```c
#include <stdio.h>
#include <math.h>
#define PI 3.14159265
// 计算两个向量的点积
double dot_product(double x1, double y1, double x2, double y2) {
return x1 * x2 + y1 * y2;
}
// 计算向量的模长
double norm(double x, double y) {
return sqrt(x * x + y * y);
}
// 计算两个向量的夹角(单位为弧度)
double angle(double x1, double y1, double x2, double y2) {
double dot = dot_product(x1, y1, x2, y2);
double norm1 = norm(x1, y1);
double norm2 = norm(x2, y2);
double cos_theta = dot / (norm1 * norm2);
return acos(cos_theta);
}
int main() {
double x1, y1, x2, y2;
printf("请输入第一个向量的 x 分量和 y 分量:");
scanf("%lf %lf", &x1, &y1);
printf("请输入第二个向量的 x 分量和 y 分量:");
scanf("%lf %lf", &x2, &y2);
double theta = angle(x1, y1, x2, y2);
printf("两个向量的夹角为 %.2f°\n", theta * 180.0 / PI);
return 0;
}
```
注:本程序中,`dot_product` 函数用来计算两个向量的点积,`norm` 函数用来计算向量的模长,`angle` 函数用来计算两个向量的夹角(单位为弧度)。最后,将夹角转换为度数并输出。
用C++写一个计算向量夹角的代码
C语言中计算向量夹角的代码如下:
```
#include <math.h>
#include <stdio.h>
double dot_product(double x1, double y1, double x2, double y2) {
return x1 * x2 + y1 * y2;
}
double magnitude(double x, double y) {
return sqrt(x * x + y * y);
}
double angle(double x1, double y1, double x2, double y2) {
double dp = dot_product(x1, y1, x2, y2);
double mag1 = magnitude(x1, y1);
double mag2 = magnitude(x2, y2);
double cos_theta = dp / (mag1 * mag2);
return acos(cos_theta);
}
int main() {
double x1, y1, x2, y2;
printf("Enter x1, y1: ");
scanf("%lf %lf", &x1, &y1);
printf("Enter x2, y2: ");
scanf("%lf %lf", &x2, &y2);
double theta = angle(x1, y1, x2, y2);
printf("The angle between the vectors is %lf radians\n", theta);
return 0;
}
```
上面代码实现了三个函数:dot_product,magnitude和angle。前两个函数分别计算两个向量的点积和向量的模。angle函数计算两个向量间的夹角,使用余弦定理:cos(θ) = A·B / |A| |B|。