热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

【科技】浅谈圆的反演

一时兴起,就有了这篇博客。本人也学识浅薄,姑且讲一下我对于圆反演的一些皮毛之见。首先我们要明白反演是什么:反演是一种基本的几何变换。给定一个平面上的一个反演中心$O$和一个常数$k$,对于任意

一时兴起,就有了这篇博客。本人也学识浅薄,姑且讲一下我对于圆反演的一些皮毛之见。

首先我们要明白反演是什么:

反演是一种基本的几何变换。给定一个平面上的一个反演中心$O$和一个常数$k$,对于任意一个点$A(A \neq O)$,我们可以找到一个在直线$OA$上的点$A'$,使得线段$OA,OA'$的有向长度的乘积为$k$,那$A'$就是$A$关于$O$的反演点,可以证明这样的$A'$是唯一的。我们称$A->A'$的这种变换为反演,我们也可以把它看成一种映射,而且是双射。

点有关于圆的反演:

给定一个平面上的一个圆,其圆心为$O$,半径为$r_0$,对于任意一个点$A(A \neq O)$,我们同样可以找到一个在直线$OA$上的点$A'$,使得线段$OA, OA'$的有向长度之积为常数${r_0}^2$,那$A'$就是$A$关于圆$O$的反演点,同样这样的$A'$是唯一的。

接下来我们讨论的问题都将围绕一个反演中心展开,所以我们用反演变换$f$来表示关于圆$O$的反演,这里我们有$f(A) = A'$。

直线关于圆的反演:

直线$A$关于圆$O$的反演$A'$就是$\{ f(P) | P \in A \}$,通俗地讲就是把直线上的点都做反演后点的集合,很明显这也是一个双射。

我们首先说一下结论:

  1. 当直线$A$过点$O$时,$A' = A$。
  2. 当直线$A$不过点$O$时,$A'$是一个圆,且$A'$始终过点$O$。当$A$与圆$O$相交时,$A'$与圆$O$相交;当$A$与圆$O$相切时,$A'$内切与圆$O$;当$A$与圆$O$相离时,$A'$内含与圆$O$。

第一句话比较简单,不做累述,接下来主要证明第二句话,并会给出$A'$的具体的位置。(不会画图,大家自己脑补)

方便起见,我们假设圆$O$是一个单位圆(这个并没有关系,图是可以缩放的),直线$A$为$x = a(a \neq 0)$。

设$A$上任意一个的点$P(a, y_1)$,$dis(P, O) = \sqrt{ a^2 + {y_1}^2 }$,由相似得$P' = f(P) = ( \frac{a}{a^2 + {y_1}^2} , \frac{y_1}{a^2 + {y_1}^2} )$。

这里点$P'$的轨迹中只有$y_1$一个变量。我们要证明$P'$的轨迹是一个圆,即我们想要得到$P'(x,y)$中$x,y$的关系式。

根据$P'$的坐标有:$(1) x = \frac{a}{a^2 + {y_1}^2}  \qquad (2) y_1 x = a y $

联立$(1)(2)$消掉$y_1$后即可得:$ x^2 - \frac{1}{a}x + y^2 = 0 $

可以写成圆的标准方程:$ (x - \frac{1}{2a})^2 + y^2 = (\frac{1}{2a})^2 $

 所以可以知道$A'$的圆心位于$(\frac{1}{2a}, 0)$,半径为$\frac{1}{2a}$,所以说$A'$始终过点$O$。很容易看出,当$a = 1$时,直线$A$与圆$O$相切,此时圆$A'$也内切与圆$O$;其他两种情况也可以得到证明。

圆有关于圆的反演:

圆$A$关于圆$O$的反演也定义为$\{ f(P) | P \in A \}$。

我们先阐明结论:

  1. 当圆$A$过点$O$时,$A'$会退化成一条直线,可以看做上一部分直线关于圆的反演的逆变换。
  2. 当圆$A$不过点$O$时,$A'$是一个圆。当$A$与圆$O$相交时,$A'$也与圆$O$相交;当$A$与圆$O$外(内)切时,$A'$与圆$O$内(外)切;当$A$与圆$O$相离(内含)时,$A'$与圆$O$内含(相离)。

第一句话我们已经讨论过了就不做累述。我们仿照上一部分,对此第二句话进行简要证明。

同样假设圆$O$是一个单位圆,圆$A$的圆心在$(a, 0)$,半径是$r(r \neq a)$。

设$A$上的任意一点$P(x_1, y_1)$,故有方程:$(1) (x_1 - a)^2 + {y_1}^2 = r^2 $

同样可以得到$P' = f(P) = (\frac{x_1}{ {x_1}^2 + {y_1}^2 }, \frac{y_1}{ {x_1}^2 + {y_1}^2 } )$

根据$P'$坐标得到方程:$ (2) x = \frac{x_1}{ {x_1}^2 + {y_1}^2 } \qquad (3) y_1 x = x_1 x $

联立方程$(1)(2)(3)$消去$x_1,y_1$可以得到一个圆的标准方程:$(x + \frac{a}{r^2 - a^2})^2 + y^2 = (\frac{r}{r^2 - a^2})^2$

显然$A'$是一个圆,圆心和半径都能知道了。读者们可以自行验证是否满足结论中第二句话所述的三种情况。

圆反演的性质与应用:

有几个需要知道的事实:

  1. 两对不共线的互反点四点共圆。(证明可以先得到相似,再得到对角互补)
  2. 两个外切的圆在分别反演后仍外切(如果切点恰好是反演中心,则反演后为两平行线),对于内切、相交、相离、内含的情况也是一样。这个同样适用于圆和直线的关系上。(因为原有的交点在反演后仍是交点,由于反演是可逆的,不会产生额外的交点)

关于圆的反演变换是几何中一个常用技巧,其通常可以把圆上的问题转化成直线上的问题,在多圆问题中尤显其强大之处。

$\star$ 一道例题。给定两个圆$A,B$和一个不在$A,B$上的点$P$,求出所有过点$P$的圆,满足与$A,B$分别相切。

直接做好像没什么办法,我们考虑利用反演变换。以$P$为圆心任意半径做一个圆,然后分别做出$A,B$关于圆$P$的反演$A',B'$,可以得到$A',B'$的公切线,把公切线反演回去就是所求的圆。做法很简单,原因也很简单,由于要求的是过点$P$的圆,相当于是要求反演后的一条直线,并且这条直线要与反演后的$A,B$相切。

 

参考资料:

  • 知乎zdr0的专栏  https://zhuanlan.zhihu.com/p/55834403

推荐阅读
  • 本文比较了eBPF和WebAssembly作为云原生VM的特点和应用领域。eBPF作为运行在Linux内核中的轻量级代码执行沙箱,适用于网络或安全相关的任务;而WebAssembly作为图灵完备的语言,在商业应用中具有优势。同时,介绍了WebAssembly在Linux内核中运行的尝试以及基于LLVM的云原生WebAssembly编译器WasmEdge Runtime的案例,展示了WebAssembly作为原生应用程序的潜力。 ... [详细]
  • 本文为Codeforces 1294A题目的解析,主要讨论了Collecting Coins整除+不整除问题。文章详细介绍了题目的背景和要求,并给出了解题思路和代码实现。同时提供了在线测评地址和相关参考链接。 ... [详细]
  • Linuxchmod目录权限命令图文详解在Linux文件系统模型中,每个文件都有一组9个权限位用来控制谁能够读写和执行该文件的内容。对于目录来说,执行位的作用是控制能否进入或者通过 ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • Lodop中特殊符号打印设计和预览样式不同的问题解析
    本文主要解析了在Lodop中使用特殊符号打印设计和预览样式不同的问题。由于调用的本机ie引擎版本可能不同,导致在不同浏览器下样式解析不同。同时,未指定文字字体和样式设置也会导致打印设计和预览的差异。文章提出了通过指定具体字体和样式来解决问题的方法,并强调了以打印预览和虚拟打印机测试为准。 ... [详细]
  • 安装mysqlclient失败解决办法
    本文介绍了在MAC系统中,使用django使用mysql数据库报错的解决办法。通过源码安装mysqlclient或将mysql_config添加到系统环境变量中,可以解决安装mysqlclient失败的问题。同时,还介绍了查看mysql安装路径和使配置文件生效的方法。 ... [详细]
  • Final关键字的含义及用法详解
    本文详细介绍了Java中final关键字的含义和用法。final关键字可以修饰非抽象类、非抽象类成员方法和变量。final类不能被继承,final类中的方法默认是final的。final方法不能被子类的方法覆盖,但可以被继承。final成员变量表示常量,只能被赋值一次,赋值后值不再改变。文章还讨论了final类和final方法的应用场景,以及使用final方法的两个原因:锁定方法防止修改和提高执行效率。 ... [详细]
  • 本文介绍了求解gcdexgcd斐蜀定理的迭代法和递归法,并解释了exgcd的概念和应用。exgcd是指对于不完全为0的非负整数a和b,gcd(a,b)表示a和b的最大公约数,必然存在整数对x和y,使得gcd(a,b)=ax+by。此外,本文还给出了相应的代码示例。 ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • EPICS Archiver Appliance存储waveform记录的尝试及资源需求分析
    本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • Microsoft Office for Mac最新版本安装教程,亲测可用!
    本文介绍了Microsoft Office for Mac最新版本的安装教程,经过亲测可用。Office工具是办公必备的工具,它为用户和企业设计,可以利用功能强大的Outlook处理电子邮件、日历和通讯录事宜。安装包包括Word、Excel、PPT、OneNote和Outlook。阅读本文可以了解如何下载并安装Office,以及安装过程中的注意事项。安装完毕后,可以正常使用Office中的Word等功能。 ... [详细]
author-avatar
jerry613
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有