另外, 这个程序为了表示是3维向量, 定义了一个常数#define VECSIZE 3
但是在这里又直接写3, 不一致.
这样虽然不会出错, 但是给理解造成困惑.
vectorNorm 也一样.
double x[VECSIZE] = {0.0,1.0,0.0}
这个是这里作为示例, 求两个向量的夹角的第一个向量的变量,
变量名是x, 而不是X轴, 而这个向量是y轴的,
这样同样是容易让人困惑, 下面的y同理.
这样, 整个程序的含义是:
函数 vectorProduct求两个向量的点积
函数 vectorNorm 求向量的模(长度)
main函数是示例:
定义了x和y两个向量,
用vectorNorm分别求出两个向量的模, xNorm, yNorm
用vectorProduct求出两个向量的叉积, 然后除以两个向量的模, 得到夹角的余弦值, cos_phi
用acos反余弦求出两个向量的夹角(单位弧度), 然后换算成角度为单位, cos_phi
楼主你好,希望对你有帮助
#include<iostream>
#include<cmath>
using namespace std
#define PI 3.141592653
int main()
{
double a[4]
double b[4]
double t
cout<<"请输入第一个向量的起点坐标:"<<endl
cin>>a[0]>>a[1]
cout<<"请输入第一个向量的终点坐标:"<<endl
cin>>a[2]>>a[3]
cout<<"请输入第二个向量的起点坐标:"<<endl
cin>>b[0]>>b[1]
cout<<"请输入第二个向量的终点坐标:"<<endl
cin>>b[2]>>b[3]
t=((a[0]-a[2])*(b[0]-b[2])+(a[1]-a[3])*(b[1]-b[3]))/(sqrt(pow(a[0]-a[2],2)+pow(a[1]-a[3],2))*sqrt(pow(b[0]-b[2],2)+pow(b[1]-b[3],2)))
cout<<"这两个向量的夹角为:"<<acos(t)*(180/PI)<<"度"<<endl
return 0
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)