zoj 1439 Area Ratio 计算三角形内接圆面积和外接圆面积之比

本文介绍了如何使用输入的三维坐标来计算三角形的内切圆半径和外接圆半径,并提供了具体的C++实现代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目来源:

http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=439

分析:

三角形面积:

area = sqrt(p (p - a) (p -b)(p -c))

p = (a + b +c) / 2;

三角形内接圆 半径  rin = 2 * area / l  l 为周长

三角形外接圆 半径  rout = abc  /  (4*area) ;

代码如下:

double add(double a, double b){
    return (fabs(a+b) < EPS * (fabs(a) + fabs(b))) ? 0 : (a + b) ;
}
struct Point{
    double x, y ,z ;
    Point(){}
    Point(double x, double y, double z):x(x),y(y),z(z){}

} ;
double dist(Point a, Point b){
    return sqrt( add( add( (a.x - b.x)*(a.x - b.x) ,(a.y - b.y)*(a.y - b.y) )
               ,(a.z - b.z)*(a.z - b.z) ) ) ;
}
Point a, b , c;
int main()
{

    while(scanf("%lf%lf%lf%lf%lf%lf%lf%lf%lf",&a.x ,&a.y ,&a.z , &b.x , &b.y ,&b.z ,&c.x , &c.y ,&c.z ) != EOF){
        double aa = dist(b,c) ;
        double bb = dist(a,c) ;
        double cc = dist(a,b) ;
        double p = (aa +bb +cc) * 0.5 ;
        double area = sqrt(p*(p - aa)*(p - bb)*(p - cc)) ;
        double rout = aa * bb * cc / 4 / area ;
        double rin = area / p ;
        printf("%.3lf\n" , rin * rin / rout / rout) ;

    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值