poj 2242 数学(给三点求外接圆周长)

题意:给定不共线的三点坐标,求其外接圆的周长。

思路:通过坐标可以求出三点围成三角形的面积S。根据正弦定理有a/sinA = 2*R,根据面积公式有S = (bcsinA)/2。消去sinA可得关于R的等式,进而可求周长。

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <queue>
#include <cstdlib>
using namespace std;
#define clc(s,t) memset(s,t,sizeof(s))
#define PI 3.141592653589793
double dis(double a,double b,double c,double d){
    return sqrt((c-a)*(c-a)+(d-b)*(d-b));
}
int main(){
    double a,b,c,d,e,f;
    while(scanf("%lf %lf %lf %lf %lf %lf",&a,&b,&c,&d,&e,&f)!=EOF){
        double s = fabs(a*d+b*e+c*f-d*e-a*f-b*c);
        printf("%.2f\n",PI*dis(a,b,c,d)*dis(a,b,e,f)*dis(c,d,e,f)/s);
    }
    return 0;
}


你可能感兴趣的:(poj 2242 数学(给三点求外接圆周长))