对比欧式空间和球面空间 理解 双曲空间

讲个笑话:

  • 我的腰: ) <math xmlns="http://www.w3.org/1998/Math/MathML"> \quad </math>(
  • 你的腰:( <math xmlns="http://www.w3.org/1998/Math/MathML"> \quad\quad </math>)

最近双曲空间比较热门,很多图像领域的文章引入双曲空间之后也取得了很好的效果。什么是双曲空间?我们从二维的欧式空间和球面空间引入并介绍一下双曲空间。

一个普通的二维欧式平面是上图这个样子,它每个方向上曲率都是0。如果我们给它加上正曲率,他就可以变成下图这样:

但是现在依旧是一个平面,它是中空的,添加曲率之后从二维平面变成了二维球面。

曲率

想象一下在黑洞周围的弯曲光线:

我们要知道,光总是在最短的路径上沿直线运动的,但是如果空间本身就是弯曲的,那会怎么样?如果地球是出于一个球形空间,那个在地平线上向前看,光线实际上会绕着地球一周。这样的话,也就没有所谓的地平线一说了。

如果我们用正多边形去平铺二维的欧式平面(Euclidean Tiling),我们可以有以下三种方法:

使用正三角形,正四边形,或者正六边形。

但是我们是没办法使用正五边形平铺出一个平面的,因为你可能会遇到这样的困境:

三个拼不起来,四个又加不上。

二维欧式平面完成不了的事情,却可以使用二维球面完成,现在我们其添加曲率转化成球面空间。

比如可以用二维平面的五边形拼成一个十二面体:

然后我们为其添加曲率,就可以获得这样的球体:

正方形组成的六面体也可以:

四个三角形组成的四面体:

八个三角形组成的八面体:

总结一下:

但是我们要注意,上面的球的的拼接线都是直线,所有的图形都是在二维的球壳上,没有可以弯曲的三维空间。这里我们是用三维进行了球壳可视化。

双曲空间

知道了从二维欧式平面到二维球面,接下来通过介绍二维球面我们就可以通过相反特性了解双曲空间。

中间的欧式平面中一个点要用四个正四边形才能组起来。

但是在左边的球面中,一个点仅需要三个正方形就可以。

但是在欧式空间中,呢?

欧式空间有着部分和球面空间相反的特性,一个点上可以使用更多个正方向,比如:

这样一个手工作品。

当你尝试在任何一个点将其展平的时候,其他的地方就必定会弯曲。

将这个模型扩大的话就是这样:

虽然我们从高维的视角可视化之后他像一个木耳,但是实际上双曲空间本身还是一个二维几何面

投影

投影我们都知道,生活中我们可以将立体的三维物品投射到某一平面上。比如上图,从某一视角我们可以将两个球体投射为两个贴在一起的圆形。

下图是一个正方形吗?二维平面的角度看肯定不是的。

但是如果我说它是某一正方体的投影呢?那这个黄色部分确实就是一个正方形。

二维球形平面投影到二维欧式平面

比如世界地图:

如果你去搜世界地图,你发现大部分都是下图这种弧形边缘的。

如果你硬要将其投射成长方形的平面,就会变成下图:

对比一下我们可以看到,在左边图中非洲和格陵兰岛看起来差不多大,在右图中,非洲看起来差不多是格陵兰岛的三四倍。然而实际上非洲面积是格陵兰岛的14倍。

了解摄影的一定都知道广角畸变会扭曲图像边缘。将球面映射到平面必然会带来一定程度的失真。

映射的时候总要损失某一方面的内容,所以实际上有上百种映射方法,进行映射的时候需要按需考虑。

stereographic投影

关于stereographic投影建议现看这个视频:

www.youtube.com/watch?v=eGE...

那双曲空间和球面空间不同角度的stereographic投影就是中间这一列。

接下来我要说一句话:

任何在欧式空间的平行线,在二维球面上都是相交的。(或许可以看黎曼几何第五条公理

不要说那不是有同心圆吗,那不是平行的吗?但是同心圆映射到平面上是不平行的嗷。

因为双曲空间的特性和球面空间的特性是反着来的,所以,平行线在双曲空间上是发散的:

如果你从不同的角度看欧式空间的两平行线映射到双曲空间上,你会看到这样的状况:

总结如下:

Holonomu

接下来看这个球,我们现象上走直线,然后右拐90°,向右走相同长度之后向下90°再走相同长度。然后我们回到了原点。

这一现象成为"Holonomu"。

将这个三角放到平面上,我们可以看到,二维欧式空间中三角形内角和是等于180°的,但是在二维球面上是大于180°的,在双曲空间上是小于180°的。

因为球面空间正曲率的存在,虽然你未更改自己的行动方向,但是你会获得多余的旋转。

同理我们看一下如果在双曲空间上走直线会发生什么:

当然我们获得的这个五边形的内角和是小于欧式平面的五边形的内角和的,但是在双曲空间中同样也存在"Holonomu"现象。

公式

周长

  • Spherical Geometry: <math xmlns="http://www.w3.org/1998/Math/MathML"> C = 2 π sin ⁡ ( r ) C=2 \pi \sin (r) </math>C=2πsin(r)
  • Euclidean Geometry: <math xmlns="http://www.w3.org/1998/Math/MathML"> C = 2 π r C=2 \pi r </math>C=2πr
  • Hyperbolic Geometry: <math xmlns="http://www.w3.org/1998/Math/MathML"> C = 2 π sinh ⁡ ( r ) C=2 \pi \sinh (r) </math>C=2πsinh(r)

二维欧式空间的圆形周长我们不用多解释。那我们看球面空间的。

我们知道 <math xmlns="http://www.w3.org/1998/Math/MathML"> sin ⁡ ( x ) \sin(x) </math>sin(x)是个周期函数,所以在球面空间上,圆的周长也是周期函数:

但是在双曲空间上,我们可以看到, <math xmlns="http://www.w3.org/1998/Math/MathML"> sin ⁡ ( x ) ∼ e x \sin(x) \sim e^x </math>sin(x)∼ex,所以在双曲空间上,圆的周长呈指数型爆炸增长。

面积

  • Spherical Geometry: <math xmlns="http://www.w3.org/1998/Math/MathML"> A = 2 π ( 1 − cos ⁡ ( r ) ) A=2 \pi(1-\cos (r)) </math>A=2π(1−cos(r))
  • Euclidean Geometry: <math xmlns="http://www.w3.org/1998/Math/MathML"> A = π r 2 A=\pi r^2 </math>A=πr2
  • Hyperbolic Geometry: <math xmlns="http://www.w3.org/1998/Math/MathML"> A = 2 π ( cosh ⁡ ( r ) − 1 ) A=2 \pi(\cosh (r)-1) </math>A=2π(cosh(r)−1)

面积也是指数型增长。

毕达哥拉斯公式

  • Spherical Geometry: <math xmlns="http://www.w3.org/1998/Math/MathML"> cos ⁡ ( a ) cos ⁡ ( b ) = cos ⁡ ( c ) \cos (a) \cos (b)=\cos (c) </math>cos(a)cos(b)=cos(c)
  • Euclidean Geometry: <math xmlns="http://www.w3.org/1998/Math/MathML"> a 2 + b 2 = c 2 a^2+b^2=c^2 </math>a2+b2=c2
  • Hyperbolic Geometry: <math xmlns="http://www.w3.org/1998/Math/MathML"> cosh ⁡ ( a ) cosh ⁡ ( b ) = cosh ⁡ ( c ) \cosh (a) \cosh (b)=\cosh (c) </math>cosh(a)cosh(b)=cosh(c)

三角形面积

这个三角形面积只能在曲面上计算,没有二维欧式空间的对应公式,如下:

  • Spherical Geometry: <math xmlns="http://www.w3.org/1998/Math/MathML"> Area = ( A + B + C ) − π \text { Area }=(A+B+C)-\pi </math> Area =(A+B+C)−π
  • Hyperbolic Geometry: <math xmlns="http://www.w3.org/1998/Math/MathML"> Area = π − ( A + B + C ) \text { Area }=\pi-(A+B+C) </math> Area =π−(A+B+C)

这意味着在双曲空间上,随着角度的变化,最后三角形面积可以达到最大值 <math xmlns="http://www.w3.org/1998/Math/MathML"> π \pi </math>π。

但是没办法更大了,因为再往下就构不成三角形了。

相关推荐
是小Y啦9 分钟前
leetcode 106.从中序与后续遍历序列构造二叉树
数据结构·算法·leetcode
liuyang-neu19 分钟前
力扣 42.接雨水
java·算法·leetcode
y_dd27 分钟前
【machine learning-12-多元线性回归】
算法·机器学习·线性回归
m0_6312704027 分钟前
标准c语言(一)
c语言·开发语言·算法
万河归海42827 分钟前
C语言——二分法搜索数组中特定元素并返回下标
c语言·开发语言·数据结构·经验分享·笔记·算法·visualstudio
小周的C语言学习笔记31 分钟前
鹏哥C语言36-37---循环/分支语句练习(折半查找算法)
c语言·算法·visual studio
y_dd32 分钟前
【machine learning-七-线性回归之成本函数】
算法·回归·线性回归
小魏冬琅1 小时前
K-means 算法的介绍与应用
算法·机器学习·kmeans
凌肖战2 小时前
力扣上刷题之C语言实现(数组)
c语言·算法·leetcode