可以证明O是三角形ABC的垂心。
作图辅助线,一个很重要的技巧是延长中线等中线。
可以证明三角形DNA全等于ABC。然后通过角度变换容易证明AQ垂直于BC。
#include <iostream> #include <cstdio> #include <algorithm> using namespace std; struct point{ double x,y; }A,B,C; const int inf=10000000; int main(){ int t; double k1,k2,b1,b2,Ax,Ay; cin>>t; while(t--){ cin>>A.x>>A.y; cin>>B.x>>B.y; cin>>C.x>>C.y; if(A.x==B.x){ k1=0; Ay=C.y; b1=C.y; } else if(A.y==B.y){ k1=inf; Ax=C.x; } else{ k1=(A.y-B.y)/(A.x-B.x); k1=-1/k1; b1=C.y-k1*C.x; } if(A.x==C.x){ k2=0; Ay=B.y; b2=B.y; } else if(A.y==C.y){ k2=inf; Ax=B.x; } else{ k2=(A.y-C.y)/(A.x-C.x); k2=-1/k2; b2=B.y-k2*B.x; } if(k1==inf){ Ay=k2*Ax+b2; } else if(k2==inf){ Ay=k1*Ax+b1; } else{ Ax=(b2-b1)/(k1-k2); Ay=k2*Ax+b2; } printf("%.4lf %.4lf ",Ax+1e-8,Ay+1e-8); } return 0; }