首页 > 代码库 > POJ 1673

POJ 1673

可以证明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\n",Ax+1e-8,Ay+1e-8);	}	return 0;}