夹角有多大

xiaoxiao2025-11-10  5

这次xhd面临的问题是这样的:在一个平面内有两个点,求两个点分别和原点的连线的夹角的大小。

注:夹角的范围[0,180],两个点不会在圆心出现。 Input 输入数据的第一行是一个数据T,表示有T组数据。 每组数据有四个实数x1,y1,x2,y2分别表示两个点的坐标,这些实数的范围是[-10000,10000]。 Output 对于每组输入数据,输出夹角的大小精确到小数点后两位。 Sample Input 2 1 1 2 2 1 1 1 0 Sample Output 0.00 45.00

#include<iostream> #include<cstdio> #include<cmath> const double PI=3.1415926; using namespace std; double distance(double x1,double y1,double x2,double y2){ return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); } int main(){ int n; scanf("%d",&n); while(n--){ double x1,y1,x2,y2; scanf("%lf %lf %lf %lf",&x1,&y1,&x2,&y2); double a,b,c; a=distance(x1,y1,0,0); b=distance(x2,y2,0,0); c=distance(x1,y1,x2,y2); double m=(a*a+b*b-c*c)/(2*a*b); double l=acos(m)*180/PI;//acos()*180/PI 的返回值是0到180的 printf("%.2lf\n",l); } return 0; }

超开心,本来想直接求出斜率,再用arctan求度数,没想到瞎写瞎写用余弦定理也做出来了~~

转载请注明原文地址: https://www.6miu.com/read-5039416.html

最新回复(0)