寒假训练第九场 Brocard Point of a Triangle

时间:2023-03-09 05:22:55
寒假训练第九场 Brocard Point of a Triangle

题意:求布洛卡点坐标

思路:直接利用布洛卡点的性质。http://pan.baidu.com/s/1eQiP76E

 #include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<vector>
#define clc(a,b) memset(a,b,sizeof(a))
using namespace std;
const double eps=1e-;
const double pi=acos(-);
const int maxn=;
using namespace std; int t;
int main()
{
while(~scanf("%d",&t))
{
while(t--)
{
int K;
double c,d,a,b,e,f,m1,m2,m3,k,q;
double x,y;
scanf("%d%lf%lf%lf%lf%lf%lf",&K,&a,&b,&e,&f,&c,&d);
double l1,l2,l3;
l1=(a-e)*(a-e)+(b-f)*(b-f);
l2=(c-e)*(c-e)+(d-f)*(d-f);
l3=(c-a)*(c-a)+(d-b)*(d-b);
m1=(l1*l3*l3)/(l1*l2+l2*l3+l3*l1);
m2=(l3*l2*l2)/(l1*l2+l2*l3+l3*l1);
m3=(l2*l1*l1)/(l1*l2+l2*l3+l3*l1);
if(a!=c&&b!=d)
{
k=(-a+e)/(-a+c);
q=(-b+f)/(-b+d);
x=(e*e-b*b+(-q)*m1-m3+q*m2+q*(b*b-c*c)+f*f-a*a+q*(a*a-d*d))/(*q*a-*q*c-*a+*e);
y=(e*e-b*b+m1*(-k)-m3+k*m2+k*(b*b-c*c)-a*a+f*f+k*(a*a-d*d))/(*k*b-*k*d-*b+*f);
printf("%d %.5f %.5f\n",K,x,y);
}
else if(a==c)
{
y=(m1-m2+d*d-b*b)/(-*b+*d);
x=a+sqrt(m1-(y-b)*(y-b));
printf("%d %.5f %.5f\n",K,x,y);
}
else
{
x=(m1-m2+c*c-a*a)/(-*a+*c);
y=b+sqrt(m1-(x-a)*(x-a));
printf("%d %.5f %.5f\n",K,x,y);
}
}
}
return ;
}