圆的反演学习笔记

本文探讨了反演几何在解决复杂几何问题中的应用,包括如何通过反演将圆转化为直线,直线转化为圆,以及如何利用反演点的特性简化问题。通过具体题目解析,如ProblemofApollonius、Mindis、TheDesigner等,展示了反演几何的强大能力。

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

反演是平面上点到点的一个映射,除反演中心外每个点都有唯一的反演点与之对应
通过画图可以知道一些性质:

  1. 反演点在圆上,圆会反演成一条直线
  2. 反演点不在圆上,圆会反演成一个圆,与原来的圆位似
  3. 反演点在直线上,直线会反演成它本身
  4. 反演点不在直线上,直线会反演成一个圆
  5. 反演过后的相切关系不会改变

【HDU4773】Problem of Apollonius

给两个圆,一个点 P P P,求过 P P P 的一个或两个圆与这两个圆相切

考虑在 P P P 点反演,那么所求的圆会反演成一个直线
注意到如果是内切的话反演回去是一个外切一个内切,如果要两个外切的话两个圆心,反演点在外公切线的同一侧,利用初中知识求出外公切线再判断就可以了
圆反演出去可以用初中的相似,直线反演回来的时候,半径可以通过向直线做垂线的长度得到,而直径一定与垂线重合,于是可以较为方便得求出圆心和半径

code


【HDU6097】Mindis

初中几何题,将两个点按圆 O O O 反演出去,由于 O P = O Q OP=OQ OP=OQ,那么 D Q ′ / D Q , D P ′ / D P DQ'/DQ,DP'/DP DQ/DQ,DP/DP 的相似比相同
于是最小的时候就是 P ′ Q ′ P'Q' PQ 的连线,看与圆有没有交点讨论就可以了

code


【HDU6158】The Designer

按两个大圆相切的地方反演,那么会是两条竖直的直线框住了一些圆
很方便得求出这些圆过后反演回去就可以了,反演回去可以 “做切线反演”
即考虑切点的反演点,不妨令切点到反演中心的距离为 d d d,那么真正的圆的切点的距离就是 d ′ = R 2 / d d'=R^2/d d=R2/d
而两个圆的半径之比是 d / d ′ d/d' d/d,发现就是要求切点到圆心距离的平方,知道圆心半径很方便求出

code


【计蒜客A1283】Finding the Radius for an Inserted Circle

按上面两个圆的切点为中心反演,那么就是两条直线框了一些点自上往下排
求出来过后反演回去就可以了
反演回去还是可以用 “做切线反演” 方法

#include<bits/stdc++.h>
#define cs const
using namespace std;
int T; double R, ans[11];
int main(){
	scanf("%d%lf", &T,&R);
	double y=-0.5*sqrt(3.0)/R; R=1/(2.0*R);
	for(int i=1;i<=10;i++){ y-=2*R; ans[i]=R/(y*y-R*R); } 
	while(T--){
		int k; cin>>k; cout<<(int)ans[k]<<'\n';
	} return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FSYo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值