本文主要是介绍hdu2080 夹角有多大Ⅱ,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
设:原点O坐标(0,0),向量A坐标(x1,y1),向量B坐标(x2,y2),直线OA与OB的夹角度数等于 α;
由向量的数量积公式:
A · B = |A| * |B| * cosα
所以:
cosα = (A · B) / (|A| * |B|)
而A · B 和 |A| * |B| 都可由A、B的坐标计算得到,这样就得到了cosα的值,再用arcos函数反求一下cosα的值就能得到度数α是多少。
A · B = x1*x2 + y1*y2
|A| = 根号下(x1的平方 + y1的平方) ( |B| 同理 )
ac不了,懒得排查了,就酱。
#include <iostream>
#include <cmath>
using namespace std;int main()
{const double PI = acos(-1.0);int N;cin>>N;int x1,y1,x2,y2;while (N--){cin>>x1>>y1>>x2>>y2;double dot_ab = x1*x2 + y1*y2;//数量积 A·Bdouble abs_ab = sqrt(x1*x1+y1*y1)*sqrt(x2*x2+y2*y2);// |A||B|double cos_ab = dot_ab/abs_ab;//cos的值double acos_ab = acos(cos_ab)*180.0/PI;//acoscout<<acos_ab;}}
这篇关于hdu2080 夹角有多大Ⅱ的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!