uva 438 The Circumference of the Circle

题目:给了三个点坐标,求外界圆周长

关键:外接圆的性质:

三角形三边为 a、b、c

半周长     p=(a+b+c)/2
三角形面积 S=√[p(p-a)(p-b)(p-c)]   (海伦公式)
内切圆半径 r = S/p
                       =√[(p-a)(p-b)(p-c)/p]
                       = ½√[(-a+b+c)(a-b+c)(a+b-c)/(a+b+c)]
外接圆半径 R= abc/(4S)
                        = ¼ abc/√[p(p-a)(p-b)(p-c)]
                        = abc/√[(a+b+c)(-a+b+c)(a-b+c)(a+b-c)]


#include <cstdio>
#include <string.h>
#include <cstdlib>
#include <cmath>
#include <ctgmath>
#include <iostream>
#include <vector>
#include <algorithm>
#include <map>
#define pi  3.141592653589793
using namespace std;
double pingfang(double a) {
    return a*a;
};
//两点距离
double func1(double a1,double a2,double b1,double b2){
    double delta_x = a1-b1;
    double delta_y = a2-b2;
    double t1=pingfang(delta_x);
    double t2=pingfang(delta_y);
    return sqrt(t1+t2);
};


int main()
{
    double a1,a2,b1,b2,c1,c2;
    while (cin>>a1>>a2>>b1>>b2>>c1>>c2) {
        //先求出三边的边长
        double a,b,c;
        a=func1(a1, a2, b1, b2);
        b=func1(c1, c2, b1, b2);
        c=func1(a1, a2, c1, c2);
        
        //用海伦公式求面积
        //先求半周长
        double p = (a+b+c)/2;
        //求S
        double s = sqrt(p*(p-a)*(p-b)*(p-c));
        
        //外接圆半径 R= abc/(4S)
        double r = a*b*c / (4*s);
        printf("%.2lf\n",2*pi*r);
        
    }
    
    return 0;
}
/*
0.0 -0.5 0.5 0.0 0.0 0.5
0.0 0.0 0.0 1.0 1.0 1.0
5.0 5.0 5.0 7.0 4.0 6.0
0.0 0.0 -1.0 7.0 7.0 7.0
50.0 50.0 50.0 70.0 40.0 60.0
0.0 0.0 10.0 0.0 20.0 1.0
0.0 -500000.0 500000.0 0.0 0.0 500000.0
*/



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值