用c++写三点计算夹角的代码
时间: 2023-11-27 22:53:34 浏览: 74
假设三个点分别为A(x1, y1), B(x2, y2), C(x3, y3),则可以通过向量的余弦值来计算夹角。具体实现代码如下:
```c++
#include <iostream>
#include <cmath>
using namespace std;
// 计算向量AB和向量AC的夹角
double calcAngle(double x1, double y1, double x2, double y2, double x3, double y3) {
double ABx = x2 - x1;
double ABy = y2 - y1;
double ACx = x3 - x1;
double ACy = y3 - y1;
double AB = sqrt(ABx * ABx + ABy * ABy);
double AC = sqrt(ACx * ACx + ACy * ACy);
double cosValue = (ABx * ACx + ABy * ACy) / (AB * AC);
double angle = acos(cosValue) * 180 / acos(-1); // 弧度转角度
return angle;
}
int main() {
double x1, y1, x2, y2, x3, y3;
cout << "请输入三个点的坐标(x, y):" << endl;
cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3;
double angle = calcAngle(x1, y1, x2, y2, x3, y3);
cout << "夹角为:" << angle << "度" << endl;
return 0;
}
```
其中,acos()函数是求反余弦函数,需要引入<cmath>头文件。注意,此代码默认输入的是三个不共线的点,如果输入的三个点共线,则无法计算夹角。
阅读全文