图形寻点
时间限制:1000 ms | 内存限制:65535 KB
难度:0
-
描述
- 某一天,JXB大牛莫名其妙地进入了一个满是机关的四边形房间,而只有触发其中位于四边形房间对角线交点的机关才可以逃出来,假设四边形为ABCD,则对角线交点为线段AC和线段BD交点!同学们,你们能帮帮他吗?
-
输入
- 第一行:n 表示n组测试数据
接下来n行,每行8个整数(绝对值不超10000),分别表示顶点A B C D的坐标。
输出 - 输出占一行,输出两个对角线交点坐标
结果保留2位小数
样例输入 -
2 1 1 2 0 1 -1 0 0 0 0 1 -1 2 0 1 1
样例输出 -
1.00 0.00 1.00 0.00
提示
保证四边形是凸四边形
#include <cstdio> #include <cmath> int n,i,a[4][2],b[2],c[2],d[2],e,f,g; double h1,h2,xe,ye; int main(){ scanf("%d",&n); while(n--){ for(i=0;i<4;i++) scanf("%d%d",a[i],a[i]+1); b[0]=a[1][0]-a[0][0];b[1]=a[1][1]-a[0][1]; c[0]=a[2][0]-a[0][0];c[1]=a[2][1]-a[0][1]; d[0]=a[3][0]-a[0][0];d[1]=a[3][1]-a[0][1]; e=b[0]*c[1]-b[1]*c[0];f=c[0]*d[1]-c[1]*d[0]; if(e<0) e=-e;if(f<0) f=-f; g=e+f;h1=double(e)/g;h2=1-h1; xe=b[0]*h2+d[0]*h1;ye=b[1]*h2+d[1]*h1; xe+=a[0][0];ye+=a[0][1]; printf("%.2f %.2f\n",xe,ye); } return 0; }
- 第一行:n 表示n组测试数据