【计几】圆的一些定理




笛卡尔定理

链接:笛卡尔定理-百度百科

- 定律定义
若平面上四个半径为r1、r2、r3、r4的圆两两相切于不同点,则其半径满足以下结论:

  • (1)若四圆两两外切,则 ( ∑ i = 1 4 1 r i ) 2 = 2 ∑ i = 1 4 1 r i 2 (\sum_{i=1}^4{\frac{1}{r_i}})^2=2\sum_{i=1}^4{\frac{1}{r_i^2}} (i=14ri1)2=2i=14ri21
  • (2)若半径为r1、r2、r3的圆内切于半径为r4的圆中,则 ( 1 r 1 + 1 r 1 + 1 r 3 − 1 r 4 ) 2 = 2 ∑ i = 1 4 1 r i 2 (\frac{1}{r_1}+\frac{1}{r_1}+\frac{1}{r_3}-\frac{1}{r_4})^2=2\sum_{i=1}^4{\frac{1}{r_i^2}} (r11+r11+r31r41)2=2i=14ri21

- 定理推广:笛卡尔定理在三维坐标系中也有类似的结论:若五个球的半径是ri(1,2,…,5),满足任意一个球与其他四个球外切,则 ( ∑ i = 1 5 1 r i ) 2 = 3 ∑ i = 1 5 1 r i 2 (\sum_{i=1}^5{\frac{1}{r_i}})^2=3\sum_{i=1}^5{\frac{1}{r_i^2}} (i=15ri1)2=3i=15ri21




圆冥定理

割线定理_皮卡皮卡皮~~的博客-CSDN博客

圆幂定理-百度百科

圆幂定理是一个总结性的定理,是对相交弦定理切割线定理割线定理(切割线定理推论)以及它们推论的统一与归纳。 [1] 根据两条与圆有相交关系的线的位置不同,有以下定理:

从上述定理可以看出,两条线的位置从内到外,都有着相似的结论。经过总结和归纳,便得出了圆幂定理。




极点 & 极线

稍微了解了一点,不知道有什么用但是写下来吧。有好多性质都看不懂。

【解析几何】什么是极线,好吃吗?

极线

个人认为的极线的几何定义:

  • 过平面上的某定点作二次曲线的割线(或切线),作二次曲线在割点(切点)的切线,两个切线的交点的轨迹所在直线就是极线,定点就称该极线的极点。

极点和极线的关系:

  • 极点和极线是一一对应的。

延伸出的二次曲线的性质:

  • 过平面上的某定点作二次曲线的割线(或切线),作二次曲线在割点(切点)的切线,两个切线的交点的轨迹所在直线就是极线。
  • 过平面上的某定直线上的任意一点作二次曲线的切线,切点所在直线始终过定点(即极点)。



题目


HDU 6158 笛卡尔定理 + 韦达定理

题意:给定两两相切的三个圆,求第 k k k 个与这三个圆相切的圆的面积。

题解:- HDU 6158 The Designer【计算几何+笛卡尔定理+韦达定理】

  • HDU 6158 笛卡尔定理 + 韦达定理

  • 思路:大致思想就是,已知我们有三个圆(其中有一个是外切圆)满足笛卡尔定理的第二个形式,那么我们根据等式,可以得到一个一元二次方程,方程的两个解就是外切圆内部与两个内圆外切的第四个圆的半径(有两种情况)。之后韦达定理迭代即可。

AC代码:

#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
using namespace std;

const int N=3e6+10;
typedef long long LL;
const double eps = 1e-7;
const double pi = acos(-1);

double ans[N];

int main()
{
    int t; scanf("%d", &t);
    while(t--)
    {
        double r, R; int n;
        double t ;
        scanf("%lf %lf %d", &r, &R, &n);
        if(r > R) swap(r, R);

        ans[1] = R - r;
        for(int i=1; i<= n/2 + 5; i++)
        {
            t = 2 * (1 / ans[i] + 1 / r - 1 / R);
            if(i == 1) ans[2] = 2 / t;
            else ans[i + 1] = 1 / (t - 1 / ans[i - 1]);
            if(ans[i] < eps) break;
        }
        double res = pi * ans[1] * ans[1];
        int cnt = 1;
        for(int i=2; ans[i] < eps && cnt < n; i++)
        {
            if(n - cnt >= 2) cnt += 2, res += 2 * pi * ans[i] * ans[i];
            else cnt++, res += pi * ans[i] * ans[i];
        }
        printf("%.5f\n",res);
    }

    system("pause");
    return 0;
}

牛客 contest 553 Chino with Geometry

题解:圆冥定理


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值