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
",Ax+1e-8,Ay+1e-8);
	}
	return 0;
}

  

原文地址:https://www.cnblogs.com/jie-dcai/p/3875599.html