hdu 2080 几何计算 水题 两线段的夹角 一个点是原点

注意平角,钝角的判定,其中主要是s=0.5*sin@*a*b 公式的运用

2
1 1 2 2
1 1 1 0

#include <stdio.h>
#include <math.h>

int main()
{
	double x1,y1,x2,y2,s,len1,len2,k;

	int t;

	scanf("%d",&t);

	while(t--)
	{
		scanf("%lf%lf%lf%lf",&x1,&y1,&x2,&y2);

		s=fabs(x1*y2-y1*x2);

		len1=sqrt(x1*x1+y1*y1);

		len2=sqrt(x2*x2+y2*y2);

		//printf("%.2lf %.2lf %.2lf %.2lf\n",asin(s/(len1*len2)),len1,len2,s);

		printf("%.2lf\n",(k=asin(s/(len1*len2))/acos(-1)*180)?x1*x2<=0&&1*y2<=0?180-k:k:x1*x2<0?180:0);
	}

	return 0;
}

  

posted @ 2012-04-06 08:51  shijiwomen  阅读(329)  评论(0编辑  收藏  举报