## 几何的三种语言 ### 显式表达 (Explicit Representation) 最直白的形式。一个变量直接写成其他变量的函数——谁是因、谁是果一目了然。 比如单位圆的上半部分,用显式表达就是: $y = \sqrt{1 - x^2}$ 你给我一个 $x$,我立马还你一个 $y$。没得商量,也没有任何歧义。变量之间的关系被直接揪了出来,摆在明面上。 但这种干净利落是要付出代价的。你没法用单独一个显式函数来写出完整的圆——它会裂成两段: $y = \sqrt{1 - x^2} \quad \text{和} \quad y = -\sqrt{1 - x^2}$ 这就是显式表达最大的硬伤:必须让一个变量给其他变量“当小弟”(服从其他变量),但几何图形偏偏不吃这一套。在圆的眼里,$x$ 和 $y$ 是平起平坐的;非要定个尊卑主次,只会把图形硬生生劈成两半。 --- ### 隐式表达 (Implicit Representation) 隐式方程压根不去解某个具体的变量,而是把所有变量都塞进同一个条件里管着。谁也不用伺候谁——大家地位平等。它们之间的关系藏在方程里,而不是被单独剥离出来。 整个单位圆的隐式表达: $x^2 + y^2 = 1$ 上半圆和下半圆同时老老实实待在这里。这个方程认得完整的圆,根本不用站队选哪一半。之所以叫“隐式”,并不是说方程有多难懂,而是因为变量之间的关系被“捂”在了限制条件里,没有被拆解成因和果。 #### 隐式世界里的维度计算 你需要从所处空间的维度开始做减法。每多一个方程,就干掉一个自由度: $\text{图形维度} = \text{空间维度} - \text{方程数量}$ 在二维空间($\mathbb{R}^2$)里,一个方程能留下出一条一维曲线。在三维空间($\mathbb{R}^3$)里,一个方程能刻画出一个二维曲面;两个方程就能把它压缩成一条一维曲线;三个方程直接就把一个点死死钉住了。一句话,约束条件做的就是减法。 --- ### 参数化表达 (Parametric Representation) 参数化表达既不管约束条件,也不去解方程,而是从零开始,把一个简单的定义域投射到空间里,直接把图形“画”出来。你需要引入一个自由参数 $t$,让它顺着走,把整个图形扫出来。 单位圆的参数化表达: $(\cos t, \sin t), \quad t \in [0, 2\pi)$ 不需要过滤什么,也不会断裂成几块。一个干干净净的映射,就把一整个圆完完整整地变了出来。 #### 参数世界里的维度计算 这回你要从零开始做加法。每多一个参数,就贡献一个维度: $\text{图形维度} = \text{参数数量}$ 一个参数造出一条曲线。两个参数造出一个曲面。三个参数造出一个立体图形。参数做的就是加法。 在 $n$ 维空间($\mathbb{R}^n$)里,一个 $k$ 维图形需要 $k$ 个参数,或者 $n - k$ 个隐式方程。这两者加起来永远等于 $n$ —— 这其实就是穿上了几何外衣的“秩-零化度定理”。 #### 参数化不是唯一的 同一个圆,你爱怎么参数化就怎么参数化,办法有无数种: $\mathbf{r}_1(t) = (\cos t, \sin t), \quad t \in [0, 2\pi)$ $\mathbf{r}_2(t) = (\cos 2t, \sin 2t), \quad t \in [0, \pi)$ $\mathbf{r}_3(t) = (\cos(-t), \sin(-t)), \quad t \in [0, 2\pi)$ - $\mathbf{r}_1$ 是逆时针走。 - $\mathbf{r}_2$ 跑得快了一倍。 - $\mathbf{r}_3$ 则是顺时针走。 虽然走法千差万别(速度、方向、节奏都不一样),但踩出来的路完全是同一条。参数化其实就是强加给图形的一套坐标系,图形本身好端端地在那儿,怎么去描述它完全是人为主观挑的。 这在实际应用里影响很大: - **在计算机图形学里**,两个美术师可以用不同的 UV 贴图给同一张脸做参数化,结果就是哪怕模型一模一样,贴图拉伸的效果也截然不同。 - **在物理学里**,换个参数化方式其实只是换了块表计时,运动轨迹并没有变。 --- ### 三种表达方式的对比 |**特征**|**显式表达**|**隐式表达**|**参数化表达**| |---|---|---|---| |**核心思路**|把一个变量写成其他变量的解|所有变量受同一个条件约束|引入自由参数映射到空间里| |**操作方向**|提取|过滤|构造| |**单位圆例子**|$y = \pm\sqrt{1-x^2}$ (两半)|$x^2 + y^2 = 1$ (一个方程)|$(\cos t, \sin t)$ (一个映射)| |**维度计算**|做减法(和隐式一样)|从空间维度里做减法|从零开始做加法| |**处理完整图形**|常常断裂成几个分支|自然包含整个图形|自然包含整个图形| |**唯一性**|不唯一(会遇到同样的断裂问题)|基本唯一(只差些代数变形)|极度不唯一(同个图形有无数种参数化方式)| |**最适合用来**|算简单的局部关系|描述这图形到底是个什么东西|顺着计算、做动画、画轨迹| |**弱点**|遇到对称图形就容易出问题|很难用来取样或者遍历|夹带了图形本身根本不在乎的冗余信息| 这三种表达方式不是在打擂台争高低,它们更像是同一门语言的三种方言。显式算起来最直接,但也最容易掉链子。隐式能把图形的本体说得清清楚楚,但你想顺着它走却很难。参数化最会讲故事,但对着同一个东西,它能讲出无数个不同的版本。 --- ### 参数到底算不算加了一个维度? 这问题问到点子上了。答案取决于 $t$ 到底只是个标签,还是真实存在的东西。 当 $t$ 用来给单位圆做参数化时,它纯粹是为了方便记账——也就是为了能在二维图形上走动而硬造出来的一维空间。圆本身压根就没有关于 $t$ 的记忆。 但在狭义相对论里,粒子在空间里的运动轨迹是一条三维曲线,可它的物理本体其实是四维时空 $(x, y, z, t)$ 里的世界线。这时候,时间就不再是个打酱油的参数了,而是直接晋升成了空间里货真价实的第四维。接着,固有时间 $\tau$ 才会用来给这条世界线做参数化。 当参数带上了独立的物理或几何现实意义时,它就成了一个维度——也就是说,当你顺着这个参数往前走时,空间本身也会跟着发生变化。 > 圆不需要 $t$ 就能存在。但很显然,宇宙需要时间。