计算几何(三角形内切圆 + 海伦公式) - InCircle - UVA 11524

计算几何(三角形内切圆 + 海伦公式) - InCircle - UVA 11524

题意:

对 于 △ A B C , 对于\triangle ABC, ABC

在这里插入图片描述
假 设 其 内 切 圆 与 其 相 切 于 P 、 Q 、 R 三 点 , 假设其内切圆与其相切于P、Q、R三点, PQR

给 出 比 例 : m 1 : n 1 , m 2 : n 2 , m 3 : n 3 , 以 及 内 切 圆 的 半 径 , 给出比例:m_1:n_1,m_2:n_2,m_3:n_3,以及内切圆的半径, m1:n1m2:n2m3:n3

求 出 △ A B C 的 面 积 。 求出\triangle ABC的面积。 ABC

输入:

T 组 测 试 数 据 , T组测试数据, T

每 组 首 行 包 括 一 个 浮 点 数 R , 表 示 内 切 圆 的 半 径 。 每组首行包括一个浮点数R,表示内切圆的半径。 R

接 着 三 行 , 每 行 两 个 浮 点 数 , m i 和 n i 接着三行,每行两个浮点数,m_i和n_i mini

输出:

一 个 浮 点 数 , 表 示 S △ A B C , 小 数 点 后 保 留 4 位 数 字 。 一个浮点数,表示S_{\triangle ABC},小数点后保留4位数字。 SABC4

Sample Input

2
140.9500536497
15.3010457320 550.3704847907
464.9681681852 65.9737378230
55.0132446384 10.7791711946
208.2835101182
145.7725891419 8.8264176452
7.6610997600 436.1911036207
483.6031801012 140.2797089713

Sample Output

400156.4075
908824.1322

数据范围:

0 < T < 50001 , 1 < R < 5000 , 1 < m 1 , n 1 , m 2 , n 2 , m 3 , n 3 < 50000 0 < T < 50001,1 < R < 5000,1 < m_1, n_1, m_2, n_2, m_3, n_3 < 50000 0<T<500011<R<50001<m1,n1,m2,n2,m3,n3<50000


分析:

在这里插入图片描述
根 据 三 角 形 内 切 圆 的 性 质 , 有 : A P = A R , B P = B Q , C Q = C R 根据三角形内切圆的性质,有:AP=AR,BP=BQ,CQ=CR AP=ARBP=BQCQ=CR

设 A P = x = A R 设AP=x=AR AP=x=AR

则 : B P = n 1 m 1 x = B Q , C R = m 3 n 3 x = C Q 则:BP=\frac{n_1}{m_1}x=BQ,CR=\frac{m_3}{n_3}x=CQ BP=m1n1x=BQCR=n3m3x=CQ

A B = c = ( 1 + n 1 m 1 ) x , A C = b = ( 1 + m 3 n 3 ) x , B C = a = ( n 1 m 1 + m 3 n 3 ) x = b + c − 2 x \qquad AB=c=(1+\frac{n_1}{m_1})x,AC=b=(1+\frac{m_3}{n_3})x,BC=a=(\frac{n_1}{m_1}+\frac{m_3}{n_3})x=b+c-2x AB=c=(1+m1n1)xAC=b=(1+n3m3)xBC=a=(m1n1+n3m3)x=b+c2x

一 个 未 知 数 , 可 列 一 个 方 程 来 解 出 , 一个未知数,可列一个方程来解出,

我 们 知 道 三 条 边 a , b , c , 以 及 内 切 圆 的 半 径 R , 容 易 想 到 通 过 三 角 形 面 积 来 建 立 等 量 关 系 , 我们知道三条边a,b,c,以及内切圆的半径R,容易想到通过三角形面积来建立等量关系, a,b,cR

由 海 伦 公 式 : 由海伦公式:

S △ A B C = p ( p − a ) ( p − b ) ( p − c ) , 其 中 p = a + b + c 2 S_{\triangle{ABC}}=\sqrt{p(p-a)(p-b)(p-c)},其中p=\frac{a+b+c}{2} SABC=p(pa)(pb)(pc) p=2a+b+c

又 : 又:

S △ A B C = ( a + b + c ) R 2 = p R S_{\triangle{ABC}}=\frac{(a+b+c)R}{2}=pR SABC=2(a+b+c)R=pR

联 立 得 : 联立得:

( p − a ) ( p − b ) ( p − c ) = p R 2 (p-a)(p-b)(p-c)=pR^2 (pa)(pb)(pc)=pR2

而 : 而:

p = ( a + b + c ) 2 = b + c − 1 = ( 1 + n 1 m 1 + m 3 n 3 ) x p=\frac{(a+b+c)}{2}=b+c-1=(1+\frac{n_1}{m_1}+\frac{m_3}{n_3})x p=2(a+b+c)=b+c1=(1+m1n1+n3m3)x

带 入 解 得 : 带入解得:

x = ( 1 + n 1 m 1 + m 3 n 3 ) R 2 n 1 m 3 m 1 n 3 x=\sqrt{\frac{(1+\frac{n_1}{m_1}+\frac{m_3}{n_3})R^2}{\frac{n_1m_3}{m_1n_3}}} x=m1n3n1m3(1+m1n1+n3m3)R2

带 入 能 够 解 得 三 角 形 面 积 。 带入能够解得三角形面积。

代码:

#include<cstring>
#include<iostream>
#include<cmath>
#include<cstdio>
#include<algorithm>

using namespace std;

int main()
{
    int T;
    double R;
    double n[4],m[4];
    scanf("%d",&T);
    while(T--)
    {
        scanf("%lf",&R);
        for(int i=1;i<=3;i++) scanf("%lf%lf",&m[i],&n[i]);
        double x=sqrt((1+n[1]/m[1]+m[3]/n[3])*R*R/(n[1]*m[3]/m[1]/n[3]));
        double S=(1+n[1]/m[1]+m[3]/n[3])*x*R;
        printf("%.4lf\n",S);
    }
    return 0;
}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值