Orz lzz。spa
挺神奇的东西,网上没有多少资料,我也不是太懂,代码什么的都没写过,那就抄一下百度百科吧class
设在平面内给定一点\(O\)和常数\(k\)(\(k\not= 0\)),对于平面内任意一点\(A\),肯定\(A'\),使\(A'\)在直线\(OA\)上一点,而且有向线段\(OA\)与\(OA'\)知足\(OA \cdot OA'=k\),咱们称这种变换是以\(O\)为的反演中心,以\(k\)为反演幂的反演变换,简称反演。称\(A'\)为\(A\)关于\(O(r)\)的互为反演点。百度
当\(k>0\)时,有向线段\(OA\)与\(OA'\)同向,\(A\)与\(A'\)在反演极同侧,这种反演变换称为正幂反演,亦叫双曲线式反演变换。ant
当\(k<0\)时,有向线段\(OA\)与\(OA'\)反向,\(A\)与\(A'\)在反演极异侧,这种反演变换称为负幂反演,亦叫椭圆式反演变换。math
信息学中有几条经常使用的正幂反演的性质
这里的原点指的是反演中心
过原点的直线反演后仍为过原点的直线
不过原点的直线反演后为过原点的圆
过原点的圆反演后为不过原点的直线
不过原点的圆反演后为不过反演中心的圆
所以不少关于圆的题目能够转化为直线问题来作
给一个点集,问有多少个三元组,和原点四点共圆
• \(N \leqslant1000\).
对点进行反演,问题就转化为了三点共线问题