数学的艺术:带饰与面饰设计
数学小主题读本 · 其九 | 从七种带饰群到十七种面饰群——世界装饰图案的对称分类 | 九章格数学 PhiloMath
本册定位。 西班牙格拉纳达的阿尔罕布拉宫里,密铺墙面的瓷砖彩章几百年不重样;中国民居的窗棂、日本和服的柄样、西非肯特布的织条、伊斯兰清真寺的拱券饰带,也各自用有限的母题织出看似无尽的延续。十九世纪的数学家问了一个看似不合时宜的问题:这些图案究竟能有多少种「对称方式」? 答案令人震惊——能沿一条直线无限延续的带饰图案,对称方式只有 7 种 ;能铺满整个平面的面饰图案,对称方式只有 17 种 。再多一种也没有,少一种也凑不齐。本册要把这两个数(7 与 17)的来龙去脉完整讲清:给出带饰群与面饰群的严格定义(§1),证明带饰群的七种分类(§2)与面饰群的十七种分类(§3),带全套证明;然后按地域巡视世界各地的带饰与面饰——埃及、希腊罗马、伊斯兰、中国、日本、凯尔特、非洲与美洲——看每一种落进哪个群(§4);最后回到设计者的立场,看分类定理如何化作图案创作的调色板(§5)。本册是《平面欧氏变换群》(其四)与《二面体群》(其五)的自然续篇:那里把有限 图形的对称数尽,这里把无限 图案的对称数尽。全册不假设超出高中与一门入门线性代数的知识,附录给出七种带饰群与十七种面饰群的速查表和一份可直接运行的核对脚本。
§1 图案的语言:从装饰到对称群
先看两段图案。把一条花边带子平放在桌上,沿着带子方向挪动一个固定的距离,带子与自身重合——这是带饰 (frieze):它在一个方向上无限延续。再想一面铺满瓷砖的墙:沿两个方向挪动,墙面都与自身重合——这是面饰 (wallpaper):它在两个独立的方向上无限铺展。本册的全部主角就是这两类图案,以及刻画它们对称的语言——群。
「对称」的严格定义在《二面体群》一册已经立起:图形 F 的对称是把它搬回自身的等距 f (即 f (F ) = F ),全体对称在复合下成群,记作 Sym(F ) 。带饰与面饰无非是把 F 从「一块瓷砖」换成「无限延展的图案」,但对数对称的人来说,这个替换带来了一件全新的武器——平移 。一块瓷砖的对称群里不会有非平凡的平移(挪走就回不来);而一条无限花边,沿带向挪一个周期就与自身重合。平移的出现,是有限对称与无限对称的分水岭 ,也是本册一切分类的引擎。
1.1 四类等距:分类的零件
平面等距群的完整分类(其四册定理)指出:每个平面等距必属四类之一——平移 、旋转 、反射 、滑移反射 。记号约定沿用本册始终:平移 t v (沿向量 v ),旋转 R O ,θ (绕点 O 转 θ ),反射 m ℓ (关于直线 ℓ ),滑移反射 g ℓ ,v (沿轴 ℓ 滑移向量 v 后作轴上反射;约定 v 平行于 ℓ 且非零,否则退化为反射)。
t
平移
R
旋转
m
反射
g
滑移反射
图 1-1 四类等距。蓝色三角形是「原像」,金色是「像」。滑移反射 = 沿轴滑移 + 作轴反射,两者合成一步完成。
记号与方向 本册图案的坐标约定:带饰沿水平方向延伸,带轴取 x 轴;「竖直镜面」指垂直于带轴的镜面(x = 常数的直线),「水平镜面」指平行于带轴的镜面(y = 常数的直线)。面饰的「水平/竖直」同理相对格的方向而言。复合次序沿用函数记号:( f ∘ g )( x ) = f ( g ( x ) ),即先做 g 再做 f 。
1.2 带饰与面饰的严格定义
「无限延展」必须写成群的语言才好数。关键观察:一个图案的对称群若含非平凡平移,则含无穷多个 平移(一个平移的幂永不相同)。所以真正的刻度不是「有几个平移」,而是「平移子群的结构」。
定义 1.1(平移子群) 对 F ≤ E(2) (E(2) 的任意子群),称 T (F ) = { 平移 ∈ F } 为 F 的平移子群 。它是子群:两个平移的复合是平移,平移的逆是平移,恒等映射是零平移。
定义 1.2(带饰群与面饰群) 设
F ≤
E(2) 。
称 F 为带饰群 (frieze group),若 ① T (F ) 同构于 ℤ (由一个非零平移的一切幂组成),且 ② F 中所有元素保持某一条直线 ℓ (带轴)不变——每个对称把 ℓ 映到自身。
称 F 为面饰群 (wallpaper group),若 T (F ) 同构于 ℤ² (由两个不共线平移生成的一切整组合),且 F 不保持任何直线。
例 1.3(最小的例子) 取图形 F 为平面上的一列全等圆点 {( k , 0) : k ∈ ℤ }。保持 F 的等距全体是:平移 x ↦ x + k (k ∈ ℤ ),反射 x ↦ −x ,及二者之积。它的平移子群恰是 ℤ ,全部元素保持直线 y = 0——这是一个带饰群(它将是 §2 的 p1m1 的一个「退化亲戚」,见思考题 1)。而把圆点换成整点格 {( m , n )},平移子群变成 ℤ² ,就得到一个面饰群的平移部分。
定义里的两个条件各司其职。条件「T ≅ ℤ (或 ℤ² )」排除两类病态:平移太密(如全体竖直平移,不可数)与太散(如由无理长度平移生成,不离散)。条件「保持一条直线 / 不保持任何直线」则把一维周期与二维周期分开:带饰的所有对称都得「顺着带子」,面饰则可以「斜着走」。
1.3 格:平移子群的形状
定理 1.4(平移子群是格) 设
F 是面饰群,
T =
T (
F )。则存在两个不共线向量
a ,
b ,使
T = { ma + nb : m , n ∈ ℤ }。
称 {
a ,
b } 为
格基 ,点集 {
ma +
nb } 为
格 (lattice)
Λ 。带饰群同理有
T = {
ka :
k ∈
ℤ },
a ≠ 0 为
带周期向量 。
证. 以面饰为例,带饰更简单。设 T ≅ ℤ² ,即存在两个生成元 t p , t q 使每个平移唯一写成 t p m ∘ t q n 。平移的复合对应向量相加,故 T = { mp + nq }。剩证 p , q 不共线:若共线,q = λp ,则 T 落在一条直线的方向上,任何对称 f ∈ F 把平移子群共轭到自身(引理 1.8),从而把方向 {±p } 保持——每个 f 保持方向 {±p } 或把它翻转,于是 F 保持直线(过原点沿 p 方向的那条,或与之平行的一条),与面饰定义矛盾。∎
格是图案的「骨架」:任何面饰图案都自动以格为骨架重复。按格的形状,骨架只分四种面貌(见 §3)——这是十七种面饰群的第一条分界线。
斜方格
长方格
正方格
六方格
图 1-2 四种格型:斜方(两基向量随意)、长方(垂直但不等长)、正方(垂直且等长)、六方(夹 60° 等长)。六方格还可取 {a , b −a } 作正交描述,见 §3.2。
1.4 点群:把平移「除掉」再看
带饰群与面饰群都是无限群,直接数元素是数不完的。分类的正确姿势是商 :把平移「除掉」,剩下的有限部分叫点群。每个等距 f 唯一写作 f ( x ) = Ax + c (A 为正交矩阵,c ∈ ℝ² ),称 A 为 f 的线性部分 ,记 d (f ) = A 。
引理 1.5(共轭锁死平移) 设 f 是线性部分为 A 的等距,t v 是平移。则 f ∘ t v ∘ f −1 = t Av 。特别地,若 f ∈ F ,则 f ∘ t v ∘ f −1 ∈ T (F ),故 Av 仍是格向量。
证. 直接计算:f ( t v ( f −1 ( x ) ) ) = A ( ( f −1 ( x ) ) + v ) + c = A ( f −1 ( x ) ) + Av + c = x + Av 。当 f ∈ F 、t v ∈ T 时,三个因子都在 F 中,故复合是 F 的平移。∎
定义 1.6(点群) 映射 φ : F → O(2) ,φ ( f ) = d ( f )(线性部分)。由 d ( f ∘ g ) = d ( f )d ( g ) 知 φ 是群同态,其核恰为 T (F )(线性部分为恒等的等距正是平移)。称商群 P = F /T ≅ φ ( F ) ≤ O(2) 为 F 的点群 (point group)。
点群是「把图案缩到一点看」:只关心每个对称转了多少度、有没有翻转 ,不关心挪了多远。平移除掉后,剩下的正交矩阵只有有限多种可能——于是无限群的分类问题,第一步化归为有限点群 的分类问题。但注意:点群相同不等于群相同。带饰群有 4 种点群(后面将证),却分出 7 种群——多出的 3 种来自「同样的线性部分配上不同的平移与滑移」;面饰同理,17 种群里点群只有 10 种。分类的精细工作全在「点群之外的自由度」上。
1.5 晶体学限制:为什么没有五重花
生活里见过的花朵常有五瓣(梅花、苹果花),五角星也随处可见。可是铺满墙面的面饰图案里,五重旋转中心永远找不到 ;带饰里更苛刻——连三重、四重都活不下来。这不是巧合,而是平移与旋转「合租」时必然爆发的矛盾。
定理 1.7(晶体学限制) 设 F 是面饰群。若 F 含绕某点的 n 重旋转(n ≥ 2),则 n ∈ {2, 3, 4, 6}。
证. 设
r ∈
F 是绕点
O 的
n 重旋转,
n ≥ 2。分三步。
第一步:找一个
最短 非零格向量。格
Λ 的非零向量长度在半径 1 内只有有限多个(格是离散的——由
T ≅
ℤ² ,单位圆盘含
T 的至多有限多个元素),故非零格向量的长度有正的最小值;取达到最小值的
v 。
第二步:共轭把旋转作用变成格的自同构。由引理 1.5,对每个格向量
w ,
r t w r −1 =
t r (w ) 仍是
T 的元素,且
w ↦
r (
w ) 是
Λ 的双射(逆映射是
r −1 诱导的)。故
r 限制在格上是一个
格自同构 :取格基
e 1 ,
e 2 ,则
r (
e 1 ),
r (
e 2 ) 仍是格向量,写成基的
整系数 组合,得到一个 2×2 整矩阵
M 。
第三步:迹锁定角度。线性代数事实:
r 的线性部分是转角
θ = 2π
k /
n (gcd(
k ,
n ) = 1)的旋转矩阵
R θ ,其迹为 2 cos
θ 。而
M 与
R θ 是同一个线性映射在两组基下的矩阵(一组是格基,一组是标准基),相似矩阵同迹,故
2 cos(2πk /n ) = tr M ∈ ℤ 。
但 −2 ≤ 2 cos ≤ 2,整数值只有 {−2, −1, 0, 1, 2},对应 2π
k /
n ∈ {π, 2π/3, π/2, π/3, 0(或 2π)}。逐个解出:π 给
n = 2;2π/3 给
n = 3;π/2 给 4;π/3 给 6;0 或 2π 意味着
n |
k ,与 gcd(
k ,
n ) = 1 且
n ≥ 2 矛盾。故
n ∈ {2, 3, 4, 6}。
∎
v
f(v)
f(v)−v
n = 7:|f(v)−v| = 2 sin(π/7)·|v| ≈ 0.87·|v| < |v|,与 v 最短矛盾
图 1-3 定理 1.7 证明的几何内核(以 7 重为例):若 7 重旋转 r 与格共存,则 r ( v ) − v 是比 v 更短的非零格向量,矛盾。n = 5 时这一步失效,须改用第三步的「整矩阵之迹」论证。
注 1.8(另一个更短的证明与它的局限) 对 n ≥ 7 有一个更直观的版本:设 v 最短,则 r ( v ) − v 是非零格向量(r ( v ) ≠ v ),其长度为 2 sin(π/n )·|v | < |v |(因 n ≥ 7 时 sin(π/n ) < 1/2),矛盾。这个版本对 n = 5 失效(2 sin 36° ≈ 1.18 > 1),所以完整的定理必须用「整矩阵之迹」——它能一次排除所有 n ∉ {1,2,3,4,6},包括最顽固的 5。两条证明合用,先几何后代数,是本册的第一个完整范例。
推论 1.9(带饰群的旋转) 带饰群 F 中非平凡旋转的阶只能是 2。
证. 设 r 绕点 O 转角 θ ,t a 是沿带轴的生成平移。由引理 1.5,r t a r −1 = t R (a ) ∈ T ,其中 R 是转角 θ 的旋转矩阵。而带饰的平移子群全部沿带轴方向,故 R ( a ) 必须平行于 a ;又 R 保长,故 R ( a ) = ±a :前者给出 θ ≡ 0(r 是恒等,平凡),后者给出 θ ≡ π,即 r 是 2 重旋转。反过来,绕带轴上一点的 180° 旋转把带轴映回自身、把 a 映到 −a ,与带饰完全相容。故非平凡旋转的阶恰为 2。∎
注 1.10(同法可得) 用「带轴条件」还能把带饰群的反射轴与滑移轴的方向一并锁死:竖直镜面(⊥ 带轴)、水平镜面(∥ 带轴)、沿带轴的滑移——除此之外别无可能(斜方向的反射会把带轴翻到别的方向,违反保持性)。这条连同推论 1.9,把 §2 的七种分类压缩成一次有限的枚举:带饰群的每个非平移元素,要么是关于竖直或水平线的反射,要么是沿带轴的滑移,要么是 2 重旋转,以及它们与平移的复合。§2 的分类定理正是把这几种零件的可能组合数一遍——答案恰是 7 种。
1.6 小结与第一组思考题
小结 1.11 本节立起了全册的语言:带饰群(T ≅ ℤ ,保持带轴)与面饰群(T ≅ ℤ² ,不保持直线);平移子群是离散格(定理 1.4);每个对称的线性部分给出点群 P = F /T (定义 1.6);晶体学限制(定理 1.7)把面饰的旋转锁死在 1、2、3、4、6 重——五重与七重不是没人画,而是数学不允许 ;带饰更严,只剩 2 重与各种镜面、滑移(推论 1.9、注 1.10)。接下来的两节,就是把这些零件的可能组装方式一枚一枚数清。
思考题 1
例 1.3 的圆点列 {( k , 0)} 的对称群包含平移、关于竖直线与水平线的反射及 2 重旋转——它已是 §2 七种中的「全对称者」p2mm 。若把每个圆点换成朝同一方向的手性字母「F」,平移子群不变,而镜面与旋转全部消失——同一个骨架,两种群。这个现象的量化版本正是 §2 的分类定理。
证明:面饰群的平移子群不可能同构于 ℤ³ (即平面上不能有三个方向独立的周期平移)。提示:三个平面向量必实线性相关,将相关式通分得整关系,再在 T 内部导出矛盾。
设 F 是面饰群,r 是 4 重旋转。证明 F 的格可以取正方形格基 {r ( v ), v },其中 v 是最短格向量。由此说明「含 4 重旋转的面饰必用正方格」。
用定理 1.7 的迹论证解释:为什么自然界能长出五瓣花,却铺不出五重对称的无限 wallpaper?两者的差别在「平移」上——请用一句话说清这句话的含义。
§2 带饰群:恰有七种
上一节把带饰群的零件清点完毕:平移子群 ℤ 、点群含于 {I , −I , M v , M h }、旋转至多 2 重、反射只有竖直与水平两个方向、滑移只能沿带轴。本节把这些零件的所有合法组装方式一枚一枚数清。答案先说:恰好七种 。我们会看到,七不是经验归纳,而是一次五个子群的有限枚举。
2.1 分类定理与完整证明
定理 2.1(带饰群分类定理) 设
F 是带饰群(定义 1.2)。在保持带轴方向的仿射共轭(把带轴映到带轴的仿射变换
x ↦
Ax +
b 引起的共轭
F ↦
AFA −1 )意义下,
F 恰有下列七种类型,且两两不同:
类型 点群 特征动作 Conway 记号 俗名
p1 C 1 仅平移 ∞∞ 跃
p11g C 2 滑移(无镜面) ∞× 步
p1m1 C 2 竖直镜面 *∞∞ 立
p11m C 2 水平镜面 ∞* 伏
p2 C 2 2 重旋转(无镜面) 22∞ 旋
p2mg D 2 竖直镜面 + 水平滑移 2*∞ 阶
p2mm D 2 竖直 + 水平镜面 *22∞ 全
表中
C 2 = {
I ,
S }(
S 为一线性反射或 −
I ),
D 2 = {
I , −
I ,
M v ,
M h }。
证. 设带轴为
x 轴,
t =
t (1,0) 生成平移子群
T (把带周期规范化为 1——这由仿射共轭保证)。第一步先看清点群:每个
f ∈
F 把带轴映到自身,故线性部分
d (
f ) 把向量 (1,0) 映到 ±(1,0),于是
d (f ) ∈ { I , −I , M v = diag (−1, 1), M h = diag (1, −1) }。
点群
P =
F /
T 是 {
I , −
I ,
M v ,
M h } ≅
V 4 的子群,共有 5 种可能:平凡、三个二阶子群 {
I , −
I }、{
I ,
M v }、{
I ,
M h },与全群
V 4 。逐一枚举。
(i) P = {I }。 每个
f 的线性部分是
I ,即
f 是平移(线性部分为恒等的等距必是平移),故
F =
T ≅
ℤ :得
p1 。
(ii) P = {I , −I }。 取线性部分为 −
I 的
r ∈
F :
r (
x ) = −
x +
c 。直接验证
r ² = id(两次「翻转加平移」抵消),故
r 是绕点
c /2 的 180° 旋转,且
r t r −1 =
t −1 (引理 1.5)。于是
F = ⟨
t ,
r ⟩,只有一种同构类型(无穷二面体型的商);仿射共轭可把
r 的中心规范化到原点:得
p2 。注意此型无任何反射元素(线性部分
M v 或
M h 不在点群里)。
(iii) P = {I , M v }(竖直反射)。 取线性部分为
M v 的
m :
m (
x 1 ,
x 2 ) = ( −
x 1 +
c 1 ,
x 2 +
c 2 )。不动点方程只约束
x 1 =
c 1 /2,
x 2 任意——
永远存在一条竖直不动直线 。故此型的每个非平移元素都是竖直镜面,没有滑移的自由度;
F = ⟨
t ,
m ⟩:得
p1m1 ,唯一。
(iv) P = {I , M h }(水平反射)。 取
m :(
x 1 ,
x 2 ) ↦ (
x 1 +
c 1 , −
x 2 +
c 2 )。不动点方程要求 0 =
c 1 且
x 2 =
c 2 /2。
此时分裂成两种互斥情形 ——这正是 7 = 1+1+1+2+2 中「+2」的第一处:
(iv-a) 若 c 1 是带周期的整数倍(c 1 = k ),用平移 t −k 左乘 m 得 n = t −k m ,其 c 1 分量为 0,即 n ( x 1 , x 2 ) = ( x 1 , −x 2 + c 2 )——一条水平镜面,且 n ² = id。于是 F = ⟨ t , n ⟩:得 p11m (其余非平移元素 n t j ,j ≠ 0,都是滑移,但它们已可由镜面与平移复合表出)。
(iv-b) 若 c 1 不是周期的整数倍,则任何 m t j 都无不动点(c 1 + j ≠ 0),全部是滑移。选 j 使 g = m t j 的滑移分量 s = c 1 + j 落在 (0, 1) 内;由 g ² = t (2s ,0) ∈ T 知 2s 是整数,故 s = 1/2。于是 F = ⟨ g ⟩(g ² = t ):得 p11g 。
两种情形互斥(一个有水平镜面、一个没有),且各自的生成关系唯一,故恰得两种。
(v) P = V 4 (全群)。 取三个代表:线性部分 −
I 的
r 、线性部分
M v 的
m 、线性部分
M h 的
h ,可设
h =
m r (商群里
M v ·(−
I ) =
M h ,差一个平移可并入代表元)。由 (iii) 的论证,
m 必是竖直镜面。对
h (
x 1 ,
x 2 ) = (
x 1 +
h 1 , −
x 2 +
h 2 ):由
h ² ∈
T 得 2
h 1 是整数。
再次分裂 ——这是第二处「+2」:
(v-a) h 1 是整数倍:与 (iv-a) 同法把 h 规范化成水平镜面。此时 F = ⟨ t , m , h ⟩ 同时含竖直与水平镜面(二者之积 m h 线性部分 −I ,给出 2 重旋转):得 p2mm 。
(v-b) h 1 ≡ 1/2(mod 1):把 h 规范化成滑移 g ( x 1 , x 2 ) = ( x 1 + 1/2, −x 2 + h 2 )(滑移距离 1/2)。线性部分 M h 的元素 g t j 都有 1/2 + j ≠ 0 的水平分量,全无不动点——群中没有水平镜面 ;而竖直镜面 m 在,二者之积给出 2 重旋转:得 p2mg 。
收尾两件事。 其一,七种两两不同:点群不同者直接分辨;点群相同的两对(p11m 与 p11g、p2mm 与 p2mg)用「有无(水平)镜面」分辨,而保持带轴方向的仿射共轭把镜面映成镜面、滑移映成滑移(镜面 = 有不动直线的反向等距,这是共轭不变量)。其二,七种都真实存在——本节下面的图鉴逐一给出显式生成元与图案(其实现已由程序按群作用生成并验证,见附录 C)。枚举完备:点群只有 5 种可能,其中三种唯一、两种各分裂为二,合计 1+1+1+2+2 = 7。
∎
注 2.2(证明的解剖) 这份证明值得再看一遍它的骨架,因为它就是 §3 十七种分类的缩影:先锁点群(有限个)→ 对每个点群写代表元 → 用「代表元的平方落在平移子群里」这一条约束分裂情形 → 检查两两不同 → 补存在性 。带饰情形的全部营养来自一条:线性部分为 M h 的元素,其水平平移分量要么是整数(出镜面)要么是半整数(出滑移)——「要么镜面、要么半程滑移」这个二选一,在 §3 的长方族里将以完全相同的形式重现。
2.2 七种带饰群图鉴
下面按表格次序逐一展示。每幅图由该群的生成元铺排同一枚手性母题 生成(主叶 + 贯穿茎线 + 上下点缀),因此图案的对称恰为该群——仔细对比七幅图,能把表格里的抽象差别看成熟悉的视觉经验。记住读图三问:有没有 2 重旋转?有没有镜面(横的还是竖的)?有没有「错半步」的滑移?
p1(∞∞ · 跃)——只有平移 生成元
t (1, 0)。点群平凡:图案里没有任何旋转、镜面与滑移,母题以完全相同的朝向一个接一个重复。
现实对应:单向希腊回纹(钩子全部朝同一侧)、书写体的一列手性符号。它是最「沉默」的带饰——把图案左右翻个面,得到的将是另一种带饰(如果原图案手性足够强)。
p11g(∞× · 步)——滑移 生成元
g (
x ,
y ) = (
x + 1/2, −
y )。注意
g ² =
t (1, 0):滑移走两步等于一个整周期,故周期是滑移的两倍。
读图:主叶沿带子一正一倒交替,上下点缀也随之「换手」——这正是滑移的签名:
先沿轴走半步、再对轴翻个身 。没有镜面:任何一条竖直或水平直线都不是图案的对称轴。现实对应:交替反向的希腊回纹、交错排列的手性纹章带。
p1m1(*∞∞ · 立)——竖直镜面 生成元
t (1, 0) 与
m v (
x ,
y ) = ( −
x ,
y )。镜面线位于每个母题正中与两母题之间(间距为半周期)。
读图:主叶左右成对、彼此镜像;上下点缀在同一竖直位置成对出现。带子可以「左右翻」但不能「上下翻」。现实对应:成对镜像回纹、铁艺栏杆的立柱花、多数柱头饰带。
p11m(∞* · 伏)——水平镜面 生成元
t (1, 0) 与
m h (
x ,
y ) = (
x , −
y )。镜面就是带轴本身。
读图:带子可以「上下翻」但不能「左右翻」。主叶与它的倒影在同一竖直位置上下相接,茎线恰好躺在镜面上。现实对应:以带轴为对称轴的花边、波纹饰带、地毯边缘的横向纹。
p2(22∞ · 旋)——2 重旋转 生成元
t (1, 0) 与 180° 旋转
r 。旋转中心成对出现(每半周期一个)。
读图:主叶在相邻位置一头朝上一头朝下,且
绕中点转半圈后重合 ——注意这与 p11m 的「上下镜像」视觉相近而本质不同:p2 的两叶是
旋转 关系(手性一致地转),p11m 是
反射 关系(手性互换地翻)。把图案理解为纸片上的墨迹:旋转能把墨迹与自身重合,反射不能(除非墨迹自身有镜面对称)。现实对应:连续 S 形钩链、交错的涡卷饰。
p2mg(2*∞ · 阶)——竖直镜面 + 水平滑移 生成元
m v 与滑移
g (
x ,
y ) = (
x + 1/2, −
y )。二者之积是 2 重旋转。
读图:整幅图案像一段楼梯:竖直镜面把母题左右镜像,水平滑移再把它们错半步、翻半身。
有竖直镜面、无水平镜面 ——上下翻面露馅,左右翻面可行。现实对应:阶梯纹、交错的城垛齿。
p2mm(*22∞ · 全)——竖直 + 水平镜面 生成元
m v 、
m h (带轴本身也是镜面)。七种中点群最大、约束最强。
读图:母题两两成十字镜像,图案沿任何水平线或半周期的竖直线都可翻折。手性在这里无处藏身——
p2mm 的图案永远可以画在透明玻璃上而不分正反面 。现实对应:希腊钥匙纹(镜像型)、绝大多数古典马赛克饰带、织锦的几何边框。
小结 2.3(读图速查) 七种带饰群的视觉指纹:先找 2 重旋转中心 (图案中成对出现的「翻转点」)。有旋转者三类:p2 (纯旋转,无镜面)、p2mg (只有竖直镜面)、p2mm (横竖镜面都有)。无旋转者四类:p1 (什么都没有)、p11g (只有滑移)、p1m1 (只有竖直镜面)、p11m (只有水平镜面)。「只有滑移」最容易被误判成「什么都没有」——判定的试金石是把图案沿带轴平移半格再翻个身 ,能重合就是滑移。
2.3 判定流程
拿到一条真实花边(或一段自己设计的纹样),按下面的顺序提问,两步内必达答案:
第一步 第二步 结论
无 2 重旋转中心 有竖直镜面 p1m1
无竖直镜面,有水平镜面 p11m
无镜面,有滑移(半周期错位翻身) p11g
全都没有 p1
有 2 重旋转中心 竖直、水平镜面都有 p2mm
只有竖直镜面 p2mg
没有任何镜面 p2
例 2.4(判定演示) 一条花边由「L」形母题组成,每半周期出现一个 L,相邻的 L 一个开口朝上一个开口朝下。检查:找不到任何竖直或水平对称轴(L 是手性的,翻过来就变「Γ」);但把图案沿带轴平移半格、再对带轴翻个身,图案与自身重合——这是滑移,且无旋转(把图案转 180° 得到镜像 L,不重合)。两步判定:p11g 。这个「L 花边」正是 2.1 节证明中情形 (iv-b) 的活标本:滑移量只能是半周期,因为滑移走两步必须回到整周期。
思想 七种分类定理是本书方法论的一次完整演练:把「图案有多少种」这种看似审美经验的问题,化归为「某些群在同一种共轭下有多少类」的可数问题 。证明的引擎只有两台——「群的元素必须封闭」与「代表元的平方必须落回平移子群」;全部技巧在于把约束数干净。下一节把这个流程升级到二维:点群从 4 阶升到 12 阶,格从 1 维升到 2 维,枚举的工作量变大,但骨架一寸不变。
思考题 2
证明:p11g 型带饰群中滑移轴必与带轴重合(提示:滑移 g 与其共轭 t k g t −k 的轴之间距与 g ² 的长度约束)。
例 1.3 的圆点列对称群是 p2mm 。给每个圆点加一个朝上的小尾刺,对称群变成哪种?尾刺一上一下交替呢?
两个带饰群 p2 与 p11m 的点群同构(都是 C 2 )。给出一个图形 F ,使 Sym(F ) 同时含两者的生成结构——这样的 F 存在吗?若存在,它的对称群其实是七种中的哪种?
行走时留在雪地里的脚印序列(左脚与右脚交替、彼此镜像)是哪种带饰群?只在沙地上留下左脚印呢?
§3 面饰群:恰有十七种
现在把同一套机器开进二维。带饰的枚举只花了五步,因为点群被带轴压到 4 阶;面饰里点群最大可到 12 阶、格有四种形状,枚举的工作量变大——但骨架一寸不变:锁点群、定格型、查提升、数配置 。本节给出十七种分类定理的完整证明;由于 Cn 族与 D1 、D2 的论证是纯初等的,我们全部展开,D3 、D4 、D6 的关键引理也逐一给出,配套的逐项程序验证在附录 C。
3.1 点群限制定理
定理 3.1(面饰点群的完全清单) 设
F 是面饰群,
P =
F /
T 其点群。则
P (共轭意义下)恰为下列十者之一:
C 1 , C 2 , C 3 , C 4 , C 6 , D 1 , D 2 , D 3 , D 4 , D 6 。
其中
C n 是
n 阶循环群(
n 重旋转),
D n 是含
n 重旋转与反射的二面体群(2
n 阶)。
证. P 是 O(2) 的有限子群(F /T 有限,因为每个陪集对应一个「错位格」,而离散性只容许有限多个模格的错位)。O(2) 的有限子群分类(《二面体群》一册 §8):或为循环群 C n ,或为二面体群 D n 。由晶体学限制(定理 1.7),P 中旋转的阶 n ∈ {1, 2, 3, 4, 6},故 P 只能是清单中的十个。∎
注 3.2(点群锁定格) 点群不只是标签,它把格的形状也一并锁死——每个
f ∈
F 的线性部分保持格
Λ (引理 1.5),故
P 作用在格上:
P ⊇ C 4 :取最短格向量 v ,则 v , R 90 v 是不共线且等长的格向量,二者生成一个正方子格;再由最短性,格中无更细的点,格恰为此正方格(详细论证见思考题 3)。含 4 重旋转者必用正方格 。
P ⊇ C 3 或 C 6 :同样取 v ,v 、R 60 (或 R 120 )v 夹 60°(或 120°)等长,构成六方格的两条最短基。含 3 或 6 重旋转者必用六方格 。
P ⊆ {I , −I }:C 2 对格的形状没有约束(−I 保持一切格),四种格型都可能出现。
P 含线性反射 M :由 M (Λ ) = Λ ,格在关于镜线方向的反射下不变。取最短格向量 v ,则 u = v + Mv (沿镜线方向)与 w = v − Mv (垂直镜线方向)都是格向量,且互相垂直——格必须含有垂直对 :要么格就是 {u , w } 张成的长方格,要么格是对角线上多出格点的菱形格 (居中长方格,即 Λ = ⟨u , (u +w )/2⟩)。
3.2 分类定理
定理 3.3(面饰群分类定理) 设
F 是面饰群。在保持格方向的仿射共轭意义下,
F 恰有下列十七种类型,且两两不同:
点群 格型 类型(IUC 记号) Conway 记号 个数
C 1 斜方 p1 o 1
C 2 斜方 p2 2222 1
C 3 六方 p3 333 1
C 4 正方 p4 442 1
C 6 六方 p6 632 1
D 1 长方 pm (镜面)、pg (滑移)**、×× 2
D 1 菱形 cm (镜面+滑移)*× 1
D 2 长方 pmm 、pmg 、pgg *2222、22*、22× 3
D 2 菱形 cmm 2*22 1
D 3 六方 p3m1 、p31m *333、3*3 2
D 4 正方 p4m 、p4g *442、4*2 2
D 6 六方 p6m *632 1
合计 5 + 3 + 4 + 2 + 2 + 1 =
17 种。
证. 按点群枚举。以下「提升」指线性部分给定的等距中平移部分的选取;关键不变量是
平移陪集 ——两个线性部分相同的元素相差一个格平移。
(i) C 1 。 线性部分全为 I ,故 F = T :p1 ,唯一。
(ii) C 2 。 取 2 重旋转 r (线性部分 −I ;此类元素平方恒为 id,故都是真正的旋转,中心由平移部分唯一决定)。F = T ⊔ rT ,r t r −1 = t −1 对一切 t ∈ T 成立。格与中心的位置都无约束(−I 保一切格;中心可经平移规范化):得 p2 ,唯一。无反射元素(点群不含线性反射)。
(iii) C 3 、C 4 、C 6 。 由注 3.2,格被锁成六方或正方。取 n 重旋转 r (n = 3, 4, 6),F = T ⊔ rT ⊔ … ⊔ r n −1T 。r n 线性部分为 I ,是平移;直接计算 r n 的线性部分恒等而其平移部分为零(n 次旋转回到恒等映射,平移亦抵消——与带饰 (ii) 同理逐字验证),故 r n = id,F = ⟨T , r ⟩ 被唯一确定:得 p3 、p4 、p6 ,各唯一。无反射、无滑移(点群不含线性反射)。
(iv) D 1 。 点群 = {I , M },M 是关于某方向 θ 的线性反射。由注 3.2 的最后一条,格含垂直对 u (沿镜线)、w (垂直镜线),格型两选一:长方格 ⟨u , w ⟩ 或菱形格 ⟨u , (u +w )/2⟩。设 m = ( M , c ) ∈ F ,把 c 分解为沿镜线分量 c ∥ 与垂直分量 c ⊥ 。由 m ² = ( I , M c + c ) = t 2c ⊥ ∈ T ,得 2c ⊥ ∈ Λ ——垂直分量只能是格距的一半整数倍,这正是带饰情形「镜面或半程滑移」二选一的二维翻版。
长方格,过镜线位置的镜面存在 (c ⊥ 为格距整数倍的一半且可被平移消去):镜面 m ( x ) = Mx + c ∥ 过格点;其与垂直方向的平移复合给出平行的镜面族,其余提升为滑移但可由镜面与平移表出。F = ⟨T , m ⟩:pm 。
长方格,全部提升都是滑移 (c ⊥ = 半格距 mod 格且无法消去):滑移 g 满足 g ² = t w (沿垂直方向滑半格再反射)。F = ⟨T , g ⟩:pg 。
菱形格 :此时镜线方向的对角平移 u + w 的一半 (即 v )也是格向量。把镜面 m 与「沿镜线滑移半格」的平移复合,镜面位置在格点与格心之间交替——镜面与滑移必然同时出现 ,二者互为对方的平移变体,任何一种都不能单独存在(若只允许镜面型提升,则 c ∥ 的半格陪集缺失,与 v ∈ Λ 矛盾)。F = ⟨T , m ⟩:cm ,唯一。
(若在菱形格上只允许滑移型提升,可以验证所得的群实际以 ⟨2v , w ⟩ 为更小的长方格平移子群——即它不过是长方格描述下的 pg ,按「平移子群取全」的规范约定并入 pg ,不另立新种。)
(v) D 2 。 点群 = {I , −I , M 1 , M 2 },两个线性反射方向垂直(M 1 M 2 = −I )。格型两选一(同 (iv)),每族反射的提升独立二选一,但群封闭性把自由度压到如下四种:
长方格,两族镜面 :F = ⟨T , m 1 , m 2 ⟩,横竖镜面交织成网格:pmm 。
长方格,一族镜面一族滑移 :F = ⟨T , m , g ⟩(如竖直镜面 + 水平滑移):pmg 。
长方格,两族滑移 :F = ⟨T , g 1 , g 2 ⟩,g 1 g 2 线性部分 −I 给出 2 重旋转,g 1 ²、g 2 ² 给出两方向平移:pgg 。
菱形格 :由 (iv) 的论证,每族「镜面 + 滑移」成对出现,两族合起来仍是唯一结构:cmm 。
(vi) D 3 、D 4 、D 6 (镜面与旋转中心的相对位置)。 格已锁成六方或正方。线性反射有若干方向族(D 3 三族、D 4 两族、D 6 三族),每族独立面临「镜面 or 滑移」的选择,而旋转中心的位置把选择锁死 。核心引理:
引理 3.4 :设 r 是绕 O 的 n 重旋转(n ≥ 3),m 、m ′ 是方向相差 θ 的两条镜面(或滑移轴)族代表。则 m m ′ 线性部分是转角 2θ 的旋转,其中心在 m 与 m ′ 的交点;若两轴平行(θ = 0),积是平移。特别地,同一族的两条镜面之积是格平移,相邻族的镜面之积是旋转 ——交点必是旋转中心。
由此,各族镜面/滑移轴的间距与交点位置被「旋转中心必须是格的轨道点」这一要求锁死。逐一检查:
D 4 (正方格) :线性反射分两族——过 4 重中心的方向(0°/90°)与对角方向(45°/135°)。若两族都是镜面:镜面交于每个 4 重中心,得 p4m 。若「过中心族」是滑移、「对角族」是镜面:4 重中心不再落在任何镜面上,而镜面恰好穿过相邻 2 重中心,滑移轴沿水平竖直方向——得 p4g 。剩下两种「全滑移」或「对角族滑移」的组合会使 4 重旋转与滑移的复合产生过中心的镜面(R 90 与水平滑移之积是 45° 方向的纯镜面,因为其平方为平移、不动直线可解),与假设矛盾,被排除;故恰两种。
D 3 (六方格) :三族镜向(相隔 60°)。若三族交于每个 3 重中心——即每族镜面都过同一类中心——得 p3m1 (所有 3 重中心都在镜面交点上)。若其中一族过中心、另两族错开半格:中心分两类,一类在镜面交点上、一类完全在镜面之外——得 p31m 。其余配置(如两族过中心一族错开)经引理 3.4 的交点计算会强迫第三族也过中心,退化为前两种之一。
D 6 (六方格) :任何一条镜面的平移变体中必有过格点者(轴位置的陪集以格距为步长,格点在轨道上);一旦有一条镜面过 6 重中心,三族方向全部以它为交点织成满格镜网——得 p6m ,唯一。(不存在「6 重中心无镜面」的变体:那将要求全部三族同时取滑移型提升,而任意滑移与 60° 旋转之积已是纯镜面,矛盾。)
收尾。 两两不同:点群不同者径直分辨;点群相同者用格型(长方 vs 菱形)、镜面有无、镜面与旋转中心的相对位置分辨——这些都是仿射共轭不变量。存在性:每种类型将在 §3.3 的图鉴中给出显式生成元与图案(全部经程序按群作用生成并数值核对,见附录 C)。枚举完备:5 个循环点群各 1 种,D 1 3 种,D 2 4 种,D 3 、D 4 各 2 种,D 6 1 种,合计 17。∎
注 3.5(与带饰分类的对读) 把两个分类定理并排看,「同一种套路」清晰可见:带饰的 p11m /p11g 之分(水平镜面 vs 水平滑移)在面饰放大成 pm /pg /cm 之分——多出的一份自由度来自第二族方向;带饰的 p2mm /p2mg 之分放大成 pmm /pmg /pgg /cmm 四分。而带饰里「滑移必须沿带轴」的限制在二维消失——滑移可以沿任何保格方向,这正是面饰比带饰多出许多类型的根本原因。数字上的总结:一维周期把对称「勒紧」到只剩 7 种;二维周期松开一档,容许 17 种;三维周期(晶体)继续松开,容许 230 种空间群——那是晶体学的起点,本册不进入。
思想 十七种分类定理常被誉为「数学应用于艺术的第一座丰碑」。它回答的问题朴素得像一句闲话——「墙纸有多少种贴法」——而答案的确定性(17,一种不多)来自完全机械的枚举。更深的回味在于:人类各文明用几百年的直觉与手艺,恰好穷尽了数学允许的全部可能 。这不是巧合:手的探索受同一套几何约束,约束的解空间本来就是这 17 个。下一节的图鉴,就是让数学与手艺在同一样品库里见面。
思考题 3
补全注 3.2 的第一条:证明含 C 4 的面饰群其格必为正方格(即由最短向量 v 与 R 90 v 张成的正方格不再有更细的格点)。提示:若格中有 av + b R 90 v (a , b 分数且不全为整数),考察其长度的最小性。
证明菱形格上「只允许滑移型提升」的群(3.2 节 (iv) 末段的括注)以 ⟨2v , w ⟩ 为平移子群,因而按规范应并入 pg 。
带饰群七种中点群最大是 D 2 (4 阶);面饰群十七种中点群最大是 D 6 (12 阶)。为什么三维晶体空间群的点群最大可达 48 阶(正八面体群)?一句话说明「维度越高、点群越富」的机制。
用引理 3.4 验证:p4g 中水平滑移轴与 45° 镜面的交点是 2 重旋转中心。
3.3 十七种面饰群图鉴
与带饰图鉴同一读法,只是多了一个维度:先找最高重旋转中心 (1、2、3、4、6 重——由定理 1.7,五重与七重不存在),再问镜面与滑移。每幅图由该群的生成元铺排同一母题生成,图案的对称恰为该群。
p1(o)——什么都没有 斜方格,
F =
T 。母题以同一朝向在斜方格上重复:无旋转、无镜面、无滑移。
手性母题的平移世界:每个花纹都朝同一方向,「翻面」必然露馅。织物的反面常显现这种对称——一切设计感都被收进最小。
p2(2222)——只有 2 重旋转 斜方格 + 180° 旋转
r 。旋转中心构成一个斜方格(每格一个)。
读图:相邻母题两两成「旋转对」——绕中点转半圈互换。它常被误认为
pg (也有错位感),判据在
手性 :p2 的母题旋转后重合(手性不变),pg 的母题翻身重合(手性互换)。
p3(333)——3 重旋转 六方格 + 120° 旋转。3 重中心有三类,各成一片六方格。
读图:每个中心周围三个母题绕成风车。没有镜面:风车有旋向。三重旋转是六方世界的「手性者」——雪花禁止手性,而 p3 恰好活在雪花格上却不分享雪花的镜像。
p4(442)——4 重旋转 正方格 + 90° 旋转。4 重中心两类(格点与格心),2 重中心一处(格边中点)。
读图:风车成方阵。无镜面:整体像被「拧」过的方格锦。中国织锦里的旋错四瓣地纹多属此类。
p6(632)——6 重旋转 六方格 + 60° 旋转。点群
C 6 :六重风车,仍无镜面。
读图:六瓣风车花瓣彼此旋转重合但不成镜像——雪花世界里的手性居民。龟甲纹的变体、某些蜂窝巢室入口的旋错排布属此。
pm(**)——一族竖直镜面 长方格 + 竖直镜面
m v 。无旋转、无水平镜面、无滑移型独立自由度。
读图:母题左右成镜像对,但
上下不对称 ——上下翻面露馅。实型如汉文字砖的行列:字无上下对称,左右却排成镜像双联。
pg(××)——一族滑移 长方格 + 滑移
g (沿水平方向滑半格再对水平轴翻身)。无镜面、无旋转。
读图:相邻行母题沿水平错半格且上下互换——「行走的镜像」。它是带饰
p11g 的二维放大:把滑移带一行行叠起来。
cm(*×)——菱形格上的镜面与滑移 菱形格:镜面与滑移成对出现(定理 3.3 的 (iv):菱形格强制二者共存)。
读图:镜面把母题镜像,斜向的格心滑移把镜像再错开——「人字纹」(herringbone)式的斜织正是其典型:每条斜行内部镜像、斜行之间滑移错接。
pmm(*2222)——两族镜面 长方格 + 横竖两组镜面。点群
D 2 满员。
读图:母题四四成镜像组,每个矩形格子的边都是镜面。透明玻璃检验:正反面无差别。对齐的窗棂方格、印章式文字砖阵列属此。
pmg(22*)——一族镜面 + 一族滑移 长方格:竖直镜面 + 水平滑移(二者之积是 2 重旋转)。
读图:左右可翻、上下错半行——像
p2mg 带饰被一行行织进布里。判定要点:找到竖直镜面后,检查水平方向只有「错半行翻身」而无水平镜面。
pgg(22×)——两族滑移 长方格:水平滑移 + 竖直滑移,无任何镜面。二者之积给出 2 重旋转。
读图:行行错半格、列列错半格,且两方向都翻身。原生图案里
pgg 相当罕见——它要求手性母题在长方格上两方向都「错半格+翻身」,却
一处镜面都不许有 ;工匠须刻意构造才会碰上,古代实例远比
pmm 、
cmm 少。(顺缝砖墙常被误认作此型,其实它是
cmm ,见例 3.7。)
cmm(2*22)——菱形格上的双镜面 菱形格 + 两族镜面(定理 3.3:(iv) 的二维版——镜面与滑移伴生)。
读图:菱格网目:菱形网格的边是镜面,格心处藏着滑移。中国锦地的菱格骨架、斜铺方砖的地面都属此型。它还有一副「素面」——
顺缝砖墙 (running bond):错半砖的砖墙,最短平移取 (1,0) 与 (0.5,1) 便是菱形格,每行砖的水平中线与每条半整数竖线都是镜面,日常最普通的砖墙正是一件
cmm (例 3.7 详解)。它是
pmm 的「斜置加强版」。
p4m(*442)——正方格满镜面 正方格 + 90° 旋转 + 两族镜面。十七种中约束最强者之一。
读图:八角星与花脑的满格阵:每条水平、竖直、对角线都是镜面,4 重中心被八条镜面包围。阿尔罕布拉宫的星形瓷砖、中国八达晕、窗棂方格锦——建筑与织物最钟爱的「皇家图案」多在此列。
p4g(4*2)——镜面让位的正方格 正方格 + 90° 旋转:镜面只沿对角方向,4 重中心上
没有 镜面(引理 3.4 的关键配置)。
读图:与
p4m 对照最见真章:同样是方格与四重旋转,但母题的手性星形「背对背」滑移错开,水平竖直方向「翻不动」。波斯 girih 的十字星镶边、印度 kolam 的拉花网络多属此型。
p3m1(*333)——三族镜面过中心 六方格 + 120° 旋转 + 三族镜面,全部 3 重中心都在镜面交点上。
读图:每个 3 重中心都被三条镜面均分成六个 60° 扇区——六角星的秩序。伊斯兰六向星花、六瓣镜像花簇属此。
p31m(3*3)——一半中心让位 六方格 + 120° 旋转 + 三族镜面:一类 3 重中心在镜面上,另一类完全在镜面之外(定理 3.3 (vi) 的分类关键)。
读图:与
p3m1 对照:母题分两批,一批被镜面锁死、一批保持手性自由。风车与镜像花在同一个六方世界共存——这种「半自由」恰是
D 3 两种配置中较隐蔽的一种,判定时最易与
p3m1 混淆。
p6m(*632)——六方满镜面 六方格 + 60° 旋转 + 三族镜面。点群
D 6 满员:十七种中对称最富者。
读图:雪花、蜂巢、龟甲的镜像世界:60° 旋转 + 十二条镜面方向,任何翻面与旋转都不露馅。自然界与人类图案在这一点上罕见地完全一致——物理与审美都偏爱这个最饱和的对称。
小结 3.6(十七种的记忆骨架) 五张「旋转谱」打底(p1 p2 p3 p4 p6 ——只旋转不镜像),随后每加一族镜面或滑移就分岔:pm pg cm (一族)、pmm pmg pgg cmm (两族)、p4m p4g (正方满配与半让位)、p3m1 p31m (六方满配与半让位)、p6m (六方满配,无让位者)。数格:5 + 3 + 4 + 2 + 2 + 1 = 17。
3.4 判定流程
真实图案的判定按「先转后翻」两步走,与带饰判定同构而多一层:
最高旋转 镜像与滑移 结论
无(1 重) 有镜面(长方格) pm
无镜面,有滑移 pg
镜面与滑移并存(菱形格) cm
全无 p1
2 重 两族镜面(长方格) pmm
一镜一滑 pmg
两族滑移 pgg
双镜面(菱形格) cmm
全无(只有旋转) p2
3 重 无镜面 / 中心全在镜面 / 中心半在镜面 p3 / p3m1 / p31m
4 重 无镜面 / 镜面过 4 重中心 / 镜面不过 4 重中心 p4 / p4m / p4g
6 重 无镜面 / 有镜面 p6 / p6m
例 3.7(判定演示:顺缝砖墙) 标准 running bond:砖为全等矩形(设为 1×1),每行错半砖。先定平移子群。肉眼可见的平移有 t (1,0) (沿行向挪一砖)与 t (0,2) (隔两行复位);但只认这两个就会漏掉真正决定分类的一个平移——错半砖的行,可以「斜着」搬回砖位:t (0.5,1) 把第 j 行的每块砖映成第 j +1 行的一块砖 ✓。于是最短的两条平移向量是 (1,0) 与 (0.5,1),它们张成的是菱形格 (居中长方格的菱形描法),每个基本区域恰含一块砖。格型既定,查 §3.2 清单,答案只能是 cm 或 cmm 。再看镜面:水平方向,每行砖自身的水平中线(y = 0.5、1.5、…)都是镜面——翻转把该行砖映到自身、把相邻行彼此交换 ✓;竖直方向,x 取 0.5 的整数倍处(0、±0.5、±1、…)都是镜面,把一行内的砖左右互换 ✓。两族正交镜面 + 菱形格 ⇒ cmm 。这个最寻常的砖墙示范了两个陷阱:其一,若只取「整数平移」t (1,0) 、t (0,2) ,平移子群会被误取成长方格,从而错判成 pmm ——必须把错缝带来的斜半格平移 t (0.5,1) 一并计入;其二,错缝砖墙有镜面,绝不是 pgg 。数值核对见附录 C 段 [5]。(顺带一记「近似对称」的界:若砖非全等矩形——如手工砖有大小差异——严格镜面立刻消失,群降级。)
3.5 阿尔罕布拉宫之谜
格拉纳达的阿尔罕布拉宫是摩尔人在西班牙留下的宫殿,其墙面、拱券、地面的瓷砖几何图案被公认为伊斯兰装饰艺术的巅峰。自十九世纪末起,一个迷人的说法广为流传:十七种面饰群全部能在宫中找到实例 ——数学家与艺术家都乐于相信,中世纪的工匠凭直觉穷尽了数学的全部可能。
然而二十世纪后期的逐幅复核(如 Grünbaum 等人的严格分析)给出了更微妙的结论:能严格归入十七种的图案约在 13 至 14 种 之间,其余的「发现」经不起推敲——常见的原因有三:其一,图案只在有限区域内绘制,「无限延展」是观测者的善意延伸;其二,许多图案具有近似对称 (手工误差使等距只对视觉成立、不对坐标成立);其三,也是最有趣的一条:色彩被当成了无物 ——两种颜色的互补花纹若把「颜色互换」也算作对称,其对称结构是更大的「色群」,按黑白等距分类就不是十七种中的原貌。
注 3.8(色对称一瞥) 把「允许颜色置换的等距」纳入对称,得到彩色对称群 。若只用黑白两色(交换黑白的等距也算对称),十七种面饰群细分为 46 种二色面饰群 (Heesch 1929 年起逐一研究,Burchardt 1981 年补全至 46 个);三色以上更多。阿尔罕布拉工匠大量运用的正是这种「色对称」——图案按 p4m 排布但颜色按 p4 的周期轮换,肉眼看是满镜面、数学上却是手性着色。这一层在 §5 的设计讨论中会再次出现:色彩是把图案从对称的暴政下解救出来的第一件工具 。
阿尔罕布拉之谜的真正教益不在数字(13 还是 17),而在方法论:分类定理规定的是严格等距下的可能性空间,而人类作品是可能空间中的自由行走 。工匠们不需要知道 17,他们只需要在手艺里一次次撞见几何的边界——而边界恰好是数学画下的那一条。
§4 世界图案谱系:让样品库对号入座
分类定理划定了可能空间,而人类文明在这个空间里走了几千年。本节按地域巡视世界各地最具代表性的带饰与面饰——每幅图案都按其对称群由程序重新绘制(几何化示意,非文物摹写),并标注它所属的类型。巡视的收获有两个方向:从图案到群 ,练习判定;从群到图案 ,看清每种对称结构的「文化栖息地」。
读法 以下每幅图都可直接用 §2.3 与 §3.4 的流程判定。建议先遮住图注自行判定,再对答案——这些图案大多「对称上有性格」,一两个判定就足以区分近亲。
4.1 地中海与近东:从莲花到回纹
尼罗河文明的饰带以莲花、纸莎草为母题,成对的莲蕾与莲花交替排布。这类饰带常见 180° 旋转关联——相邻花朵绕中点互转半圈——而无镜面(花头总有朝向),落进 p2 。它是「旋转而不翻转」的最早范例之一:工匠用「转」而不「翻」的重复,保住了每朵花的方向感。
图 4-2 希腊回纹(meander,示意)——p1 。
回纹(希腊钥匙)是地中海饰带的签名:一根线折出方螺旋,首尾相接。单向回纹的每个钩子朝同一侧,手性被完整保留 ——只有平移,p1 。注意回纹的「线感」:一笔折线自身没有镜面对称,这正是它拒绝一切翻转动作的原因。
若把回纹两两成对、左右镜像地排布,对称立刻升级:每对之间出现竖直镜面,p1m1 。同一母题、不同排列,从 p1 到 p1m1 ——群的类型不是母题给的,是排列给的 。这一课在 §5 的设计讨论中会变成方法论。
图 4-4 凯尔特式连续结带(示意)——p11g 。
凯尔特石的连续结带把一根线织成上下穿行的辫子。辫子的上下穿行恰是滑移反射:沿带轴滑半步、再对带轴翻身,图案重合——p11g 。结带的「无始无终」感来自滑移:它把镜像藏在错位之后 ,初看只有重复,细看却有翻转。
4.2 伊斯兰世界:几何的极致
清真寺的拱券饰带常以八角星与菱形交替,横竖镜面俱全,p2mm ——七种带饰中对称最富者。饰带是建筑的「框」,对称饱和的 p2mm 给出安稳的秩序感,这与它在古典建筑中出现频率最高是一致的。
图 4-6 阿尔罕布拉式八角星面饰(示意)——p4m 。
八角星配十字填补,正方格满镜面——阿尔罕布拉宫最常见的结构之一,p4m 。注意星形的「尖角织补」:90° 旋转 + 八条镜面方向,让白色底与着色纹几乎分享同等的信息量。它也是 §3.5 阿尔罕布拉之谜讨论的主角之一。
图 4-7 波斯 girih 十字星(示意)——p4g 。
girih 是波斯与中亚工匠的几何语汇:以多边形拼条(girih tiles)拼出星形网络。图中结构按 p4g 组织——同样是正方格与 4 重旋转,但镜面只沿对角方向,水平竖直方向改为滑移:星与十字「背对背」错开 。p4g 比 p4m 多一分含蓄的动感,这是 girih 网络常给人的「静中有动」的数学来源。
图 4-8 摩洛哥 zellige 六方拼瓷(示意)——p6m 。
马格里布的 zellige 手切瓷砖把六方对称推向极致:p6m ,十七种中点群满员者。六重旋转、十二个镜面方向——蜂巢与雪花的秩序被搬上墙面。六方满镜面在自然界与人工图案中同样稀有而珍贵:它要求母题自身近乎圆对称。
4.3 中国:回纹、方胜与八达晕
回纹自商周青铜器的云雷纹一路走到明清的边饰,是中国纹样的活化石。方折回旋 + 圆点收束,横竖镜面俱全:p2mm 。与希腊回纹对照极有意味——同是方折线语汇,希腊单向钩锁定 p1 ,中国回纹常取镜像双回锁定 p2mm :两种文明在同一几何空间里选择了不同的点 。
方胜是两个菱形(或圆角方胜)交叠的吉祥纹,扩展成满地则为菱格网目:菱形格的边是镜面、格心藏着滑移——cmm 。它演示了菱形格在织物中的自然性:织机经纬垂直,而菱格恰是垂直骨架上的对角设计,镜面与滑移因此伴生(定理 3.3 的 (v) 情形)。
八达晕(八答晕)以中心花纹向八个方向射出条带、相互交锁成满地,宋锦与明清织锦中的经典。八向条带天然锁定正方格与两族镜面:p4m 。「晕」的层级感(中心向外一圈圈推开)与 p4m 的满镜面叠加,构成中国织锦最恢弘的地面纹之一。
4.4 日本:七宝、麻叶与龟甲
图 4-12 七宝纹(shippō,示意)——p4m 。
七宝纹是交叠圆环的连环阵:每圆穿过四邻,环环相扣如佛家「七宝」。圆本身满对称,阵列锁定正方格与两族镜面——p4m 。它是「用最对称的母题铺最对称的格」的教科书例子:母题的对称群与格的对称群恰好咬合,一点不浪费。
麻叶纹以六方格为骨架,从每个格点射出三向线段织成叶脉般的三角形网——p6m 。江户时代起它是婴儿衣物的吉祥柄(麻生长快而直)。数学上看,它把六方格的每个三角形细胞一分为三,用纯粹的直线织出满镜面的六重秩序。
龟甲纹是正六边形的密铺——蜂巢的形状。有趣的是它的对称群常被高估:若六边形单元内无附加花纹,格子满对称(p6m );而传统和柄的龟甲常在格内加入手性花饰或交错重线,镜面被吃掉,只剩 60° 旋转——p6 。同一个骨架,加一点手性,就从最对称滑向了中间地带 :这是六方格上「满配与让位」的活例子。
4.5 南亚与西非:kolam 与 kente
图 4-15 印度 kolam 拉花(示意)——p4g 。
kolam(南印度)与 rangoli(北印度)是以米粉绕点拉出的地画,晨起绘制、日暮消散。围绕点阵的弧线网络常呈 4 重对称而镜面让位——p4g :绕点的手势有旋向,弧线的连接服从「过点不穿点」的规则,滑移由此产生。瞬时性与手性并存,是面饰群中最「有机」的一类。
加纳的 kente 以窄条织物拼缝成衣,每条内部以色块三角与菱形重复。条内图案上下对称(对带轴翻身重合)而左右保持手性节奏——p11m 。织机的经纬结构天然偏爱水平镜面(翻织对称易于实现),这解释了 p11m 在世界编织传统中的高频出现。
4.6 谱系总表
地域 / 传统 图案 群型 点群
地中海与近东 埃及莲花带 p2 C 2
希腊单向回纹 p1 C 1
镜像双钩回纹 p1m1 C 2
凯尔特结带 p11g C 2
伊斯兰世界 几何饰带 p2mm D 2
阿尔罕布拉八角星 p4m D 4
波斯 girih p4g D 4
摩洛哥 zellige p6m D 6
中国 回纹(雷纹) p2mm D 2
方胜纹 cmm D 2
八达晕 p4m D 4
日本 七宝纹 p4m D 4
麻の葉 p6m D 6
亀甲(手性变体) p6 C 6
南亚 / 西非 印度 kolam p4g D 4
肯特布条 p11m C 2
小结 4.1 巡视的统计耐人寻味:p4m 与 p6m 这类满镜面型在人工图案中出现频率远高于手性型 (p1、p3 等),而自然界恰好相反——晶体学里最常见的是手性空间群。一个可能的解释:人工图案要的是「秩序感」,镜像与旋转的富集让秩序一目了然;自然结构则受物理与化学的手性约束(分子手性、生长螺旋),对称常常「留一手」。设计者若想脱颖而出,恰可反其道而行——从手性型的冷门群里取材 。这正是下一节的话题。
思考题 4
判定图 4-12(七宝纹)是否也满足 p4 的全部对称?它为什么不是 p4 ?
把图 4-2 的单向回纹每一枚「钩」的手性翻转(作镜像),得到的带饰属于哪种群?再加一条与原带并排、且上下翻转的副本,合成双行带——判定其群型。
在你的生活环境中找三种周期图案(瓷砖、窗棂、织物、铺装皆可),用 §3.4 的流程判定并记录证据(旋转中心位置、镜面方向、滑移试验)。
表 4-1 中没有出现 pm 、pg 、pmm 、pmg 、pgg 的实例——为其中任意两种各设计一个文化风格母题并画出排布,使图案恰属该群。
§5 设计启发:把分类定理当调色板用
前四节是「读」——从图案提炼群;本节反过来「写」——从群生成图案。分类定理对设计者的价值,不在告诉你「只能画 17 种」,而在告诉你自由分布在哪里 :群型定了骨架的秩序,骨架之内的母题、比例、色彩、密度全部自由。会读分类定理的设计者,等于手里多了一张地图——既知道哪里已经被古典传统走遍,也知道哪里还是空地。
5.1 十七种当调色板:先选群,再造纹
常规的设计流程是「先画纹样、再看能怎么排」,其结果往往是最顺手的 p4m 或 p1 ——前者靠对称工具自动生成,后者只是平移复制。逆设计 把顺序倒过来:
第一步·选群 :先回答「我要的秩序感是什么」——要安稳选满镜面(p4m 、p6m 、pmm );要含蓄的动感选手性旋转(p4 、p3 );要「错位流动」选滑移(pg 、pgg 、p11g ;日常错缝的砖墙则是带镜面的 cmm );要手性体温选 p1 与 p31m 的让位半区。
第二步·定格 :群型锁定格型(§3 表)。六方格自带 60° 秩序,长方格便于矩形排布,菱形格适合斜织感。
第三步·造母题 :把母题放进基本区域,让群去复制它。母题的手性程度决定群的「成色」——母题自身越对称,图案越接近更高对称的群(下一小节的形式化)。
第四步·验证 :用判定流程反向核对图案是否恰为所选群——多出的对称要裁掉,不足的要补。
例 5.1(一个逆设计的完整走位) 目标:给茶室设计一张「安静而略带流动」的桌布。第一步:安静 → 排除手性独舞的 p1 ;流动 → 排除满镜面的 p4m ;折中取「有滑移的安静」→ pg 或 cm 。第二步:桌布是矩形裁剪,选长方格 → pg 。第三步:造一个上下不对称的叶形母题(保证无水平镜面),用滑移 g ( x , y ) = ( x + a /2, −y ) 铺排。第四步:验证只有滑移、无镜面无旋转——若叶形被误画成上下对称,图案会「升级」成 pm ,回到起点重造。整个流程中,分类定理像路标一样把自由度放到该放的地方。
5.2 母题的对称预算
母题与群之间存在一条守恒关系:图案的对称群由「群骨架」与「母题自身对称」的交集决定 。形式地说,若母题 M 的稳定子群是 H (骨架群中保持母题所在位置不动的元素),则图案的对称群以 H 为「退化点」。这给出一条设计法则:
法则 5.2(手性预算) 要图案恰属所选群型,母题必须「用尽」群的手性空间:群有镜面处母题可对称、群无镜面处母题必须手性。反之,若母题比群更对称(如给 p1 配一个圆),图案会显得「未满」;若母题比群更手性(如给 p4m 配手性星),图案会「跌破」所选群——降到低对称类。母题是群的手性预算的兑现凭证。
预算的另一面是密度 :同一群型下,母题占基本区域的比例可以从近乎空白调到近乎铺满,对称不变而气质迥异。留白多的 p2 轻盈,铺满的 p2 沉稳——群管秩序,密度管情绪。
5.3 对称破缺:张力从哪里来
完全对称的图案安详而无声;有张力的图案几乎总在做同一件事——先建立对称,再精确地破坏它 。分类定理恰好把「破坏的方式」也编了号:
降群破缺 :把满镜面格上的一枚母题换成手性版本,图案从 p4m 跌到 p4 ——秩序保留、镜像消失,观者「觉得哪里不对又说不出」,这正是张力所在。§4 的龟甲纹(p6m 降至 p6 )是文化样本。
局部破缺 :在 p4m 满阵中只改动一个基本区域的内容(如阿尔罕布拉的工匠在满铺星阵中嵌一枚签名砖),整体群不变而视线被钉住。注意这类破缺严格来说已使图案不再是面饰(无平移对称),设计中称之为「准周期锚点」。
色破缺 :保持几何、轮换颜色。图案按 p4m 排布、颜色按 p4 周期轮换,几何镜面被颜色「遮蔽」——这是 §3.5 阿尔罕布拉之谜的机制,也是最小代价的破缺:改色不改形。
5.4 无缝与裁切:从数学平面到物理成品
数学图案无限,成品有限。「无限图案贴到有限布面」有两套基本功:
无缝铺贴(tiling repeat) :把 N 个整周期装入裁片,边缘按格向量对齐——印刷、壁纸、屏幕平铺的标准做法。要点:裁片的边必须落在格向量的整数倍上,否则接缝处对称断裂(视觉上「图案错缝」)。
半幅回切(half-drop) :织物常见的「第二行错半幅」排布,本质是把 p1 铺法升级为含滑移的铺法(pg /p2 骨架)——用滑移的错位感掩盖图案的机械重复。半幅回切是工业设计里滑移反射最成功的应用 ,多数使用者并不知道自己在用「群」。
5.5 色彩:第一把破缺工具,也是第二张调色板
色对称(注 3.8)值得设计者专门一读:把「颜色置换也算对称」纳入后,十七种几何群细分为 46 种二色群。对设计的直接馈赠有两件:
正配色(perfect coloring) :让每种颜色各成一个完整子图案,色块边界即群的基本区域边界——最「干净」的配色,p4m 星阵配四色轮换即此。
斜配色(skew coloring) :颜色按子群陪集轮换、与几何不同步——色彩本身携带滑移感。同一几何、两种配色,观感判若两图:色彩是独立的秩序维度 。
5.6 算法生成:本册图案的做法
本册 §2–§4 的全部图案都由同一台「群机器」生成:给出生成元与一枚母题,程序把母题沿群作用铺满窗口。其核心不过十几行:
# 母题 = 基本区域内的一组折线/圆点;gens = 群的生成元
G = orbit(gens) # 由生成元闭包出窗口内的群元素
for g in G:
for shape in motif:
draw( g.act(shape) ) # 把母题经群元素 g 搬运后绘制
这份朴素代码值得设计者亲跑一遍,因为它给出两条深刻的体感:其一 ,群的「生成元极少、元素极多」——四五个生成元的闭包铺满整个平面,这是「设计一套规则、收获一片宇宙」的直接体验;其二 ,母题的手性误差会忠实地复制到每个周期——群是诚实的放大器,设计缺陷在无限重复中无处可藏。附录 C 给出可直接运行的完整脚本(含 §2、§3 全部群型的生成元表与结构验证)。
小结 5.3 分类定理给设计者的四件礼物:地图 (17 种秩序的全景)、预算 (母题手性与群对称的守恒)、破缺手册 (降群、局部、色彩三路张力)、机器 (生成元 + 母题的算法铺排)。一册读毕,再看任何一面墙、一段花边、一块屏幕壁纸,都应能一眼认出它活在哪个群、破了哪一处对称——这就是数学送给眼睛的第三只眼。
思考题 5
为「图书馆阅览室」「儿童游戏室」「禅修室」各选一种面饰群并陈述理由(每间至少给出两条群型层面的理由)。
例 5.1 中若把母题改为上下对称的叶形,图案升级为 pm 。再旋转母题 45° 放置,群型变为哪种?格型呢?
证明:半幅回切铺法(第二行错半幅)若图案行内只有平移,则整体群至少含一个滑移反射,且当第二行是第一行的镜像时群为 pg 、为全拷贝时群为 p2 。
用附录 C 的脚本把 p4m 的生成元换成 p4g 的(其余不变),观察图案变化。解释:为什么同一母题在两群下「感觉」如此不同?
§6 结语:从七与十七出发
回头看这一册的路线:先把图案翻译成群的语言(§1),再用同一台机器数清一维的七种(§2)与二维的十七种(§3),然后带着这份清单巡视世界(§4),最后把清单交还给设计者(§5)。数学的部分到此完整闭合——两个分类定理连同证明都已给出,两处的「再无别种」都由证明担保,而非由穷举担保。
6.1 三个数
本册真正的结尾,是三个数字。七 :能沿一条直线无限延续的图案,对称方式恰有七种。十七 :能铺满整个平面的图案,对称方式恰有十七种。再加一个只在附录里露过面的数——四十六 :若容许把「颜色」也算进对称(两个颜色各按自己的方式重现),十七种会细分出四十六种「二色面饰群」。
这三个数属于同一族。它们都是约束的产物 :平移把无穷多个等距压成一个有限的点群,晶体的离散性把旋转的阶压成 {2, 3, 4, 6},格型的有限几种与镜面、滑移的组合方式再把点群逐一劈开。约束越紧,可能越少——一维比二维紧,所以 7 < 17;有限图形完全没有平移约束,所以封闭图形的对称群(《二面体群》一册)有无限多种。数学在这里显示出一贯的性格:它不回答「你还能想出什么」,只回答「还剩下什么可能」 。而后者恰恰是可穷尽的。
6.2 本册的地图与边界
把本册放回整个系列,它的坐标很清楚。向左,它接着《平面欧氏变换群》(其四)——那里给出全部平面等距的四类划分(平移、旋转、反射、滑移反射),本册把这四类零件组装成无穷图案;也接着《二面体群》(其五)——那里数尽有限图形的对称,本册数尽无限图案的对称。向右,它指向两个未进入的世界:其一,三维 。把平面换成空间,周期图案的对称群共 230 种 (三维空间群),那是晶体学与固体物理的起点;本册用到的一切方法——平移子群、点群、晶体学限制、格型—提升—配置的枚举骨架——在三维都一字不改地继续工作,只是工作量陡增。其二,非周期与准周期 。本册从头到尾依赖「平移子群是格」这一条,它保证了图案的严格重复;一旦放弃严格平移(如彭罗斯铺砖),对称的语法就换了一套,那是另一册的主题。
小结 6.1
七与十七都是定理,不是经验。 它们的确定性来自 §2、§3 的枚举证明,以及附录 C 那份可复跑的核对脚本。
分类的价值在于「再无别种」。 「有七种」说服力有限,「恰有七种、且两两不同」才是定理。证明的后半段(两两不同与存在性)与前文同等重要。
未知与已知同源。 三维的 230 种、二色群的 46 种、准周期的新语法,用的都是本册这套方法——学会数七与十七,就已经学会数更大的数。
思考题 6
若把「平面」换成「圆柱面」(一个方向有界、另一个方向无限),图案的对称方式应有多少种?先用 §2 的思路猜测,再论证「沿轴向的平移」与「绕轴的旋转」如何互相牵制。
本册 §4 的十六件样本里,手性群(p1 、p3 、p6 等)出现得很少。请举出一件现实中你见过的、你认为属手性群的图案,并说明你据什么证据排除了镜面。
三维的「230 种」里会不会包含本册的十七种?如果把三维图案限制成所有平移都在同一个平面内,它能「降生」出哪些二维群?
附录 A 十七种面饰群速查表
下表把 §3 的分类定理汇成一览。记号约定:a 、b 记格的两条基向量(按格型选取);t a 是沿 a 的平移;R n 是 n 重旋转;m 是镜面(其后括注镜线方向);g 是滑移反射(其后括注滑移量与轴向)。表中「格型」一栏的「菱形」即居中长方格(Λ = ⟨a , (a +b )/2⟩)。
群(IUC) Conway 点群 格型 生成元 典型实例
p1 o C 1 斜方 t a , t b 手性小纹自由斜铺
p2 2222 C 2 斜方 t a , t b , R 2 带中心点的地毯单元
p3 333 C 3 六方 t a , t b , R 3 三向风车星花网
p4 442 C 4 正方 t a , t b , R 4 四向风车纹(和柄)
p6 632 C 6 六方 t a , t b , R 6 六向风车、手性龟甲
pm ** D 1 长方 t a , t b , m ∥a 上下对称条纹带
pg ×× D 1 长方 t a , t b , g ∥a (滑 a /2)错位排的叶纹
cm *× D 1 菱形 t a , t (a +b )/2 , m ∥a 斜铺方砖地面、菱格锦地
pmm *2222 D 2 长方 t a , t b , m ∥a , m ∥b 对齐窗棂方格、印章文字砖
pmg 22* D 2 长方 t a , t b , m ⊥a , g ∥a (滑 a /2)一镜一滑的花边(壁纸经典花条)
pgg 22× D 2 长方 t a , t b , g ∥a , g ∥b (各滑半格)两向错半格的手性纹(罕见)
cmm 2*22 D 2 菱形 t a , t (a +b )/2 , m ∥a , m ∥b 错缝砖墙、方胜纹、菱格毯
p4m *442 D 4 正方 t a , t b , R 4 , m ∥a 阿尔罕布拉八角星、八达晕、七宝
p4g 4*2 D 4 正方 t a , t b , R 4 , g (对角,不过 4 重中心)波斯 girih、印度 kolam
p3m1 *333 D 3 六方 t a , t b , R 3 , m ⊥a 伊斯兰六向星花(中心全在镜面)
p31m 3*3 D 3 六方 t a , t b , R 3 , m ∥a 风车与镜像花混合的六方格
p6m *632 D 6 六方 t a , t b , R 6 , m ∥a 雪花、蜂巢、zellige、麻の葉
注:生成元一栏给出的是「最小生成集」的一种取法,并非唯一;p3m1 与 p31m 的差别不在生成元形态,而在 3 重中心与镜面的相对位置(§3.3 图鉴已用图案标出)。
附录 B 七种带饰群速查表
下表把 §2 的分类定理汇成一览。记号同附录 A;带轴取为 a 的方向,「∥带轴 / ⊥带轴」指镜线相对带轴的走向。点群一栏沿用 §2 的约定:C 2 泛指任意二阶点群(既可为 180° 旋转,也可为一条线性反射或滑移),D 2 是四阶 Klein 群;这与 §3 面饰部分把含反射的二阶点群写成一个常用别名 D 1 并不矛盾——同一抽象群在不同记号体系里的两种叫法。
群(IUC) Conway 点群 生成元 典型实例
p1 ∞∞ C 1 t a 单向重复的云雷纹
p11g ∞× C 2 g (滑 a /2)脚印带、单向错位叶纹
p1m1 *∞∞ C 2 t a , m ⊥带轴镜像双联花边
p11m ∞* C 2 t a , m ∥带轴肯特布条、上下对称织带
p2 22∞ C 2 t a , R 2 埃及莲花带、中心点带
p2mg 2*∞ D 2 m ⊥带轴, g (滑 a /2)一镜一滑的藤蔓带
p2mm *22∞ D 2 t a , m ⊥带轴, m ∥带轴伊斯兰几何饰带、回纹
附录 C 一份可复跑的核对脚本
本册的一切结论都能被一行行代码重新验算。下面这份脚本只依赖 numpy ,把等距写成矩阵、把「保图案」写成「把图案的点集映回自身」,逐条核对本册的核心结论:晶体的旋转限制([0])、带饰七群([1])、面饰十七群([2]),以及两个判定演示——错缝砖墙([3])与脚印带([4])。把它存为 check.py ,装好 numpy 后直接运行,末尾会打印「全部核对通过」。
# -*- coding: utf-8 -*-
"""C-ST-9 核心结论核对(精简版,仅依赖 numpy)。"""
import math
import numpy as np
I2 = np.eye(2)
def rot(d):
t = math.radians(d); c, s = math.cos(t), math.sin(t)
return np.array([[c, -s], [s, c]])
def refl(d):
t = math.radians(d)
return np.array([[math.cos(2*t), math.sin(2*t)],
[math.sin(2*t), -math.cos(2*t)]])
def T(x, y):
return (I2.copy(), np.array([x, y], float)) # 平移
def R(d, x=0.0, y=0.0):
A = rot(d); p = np.array([x, y], float); return (A, p - A @ p) # 旋转
def M(d, x=0.0, y=0.0):
A = refl(d); p = np.array([x, y], float); return (A, p - A @ p) # 反射
def G(d, v, x=0.0, y=0.0):
t = math.radians(d)
return (refl(d), np.array([x, y], float) - refl(d) @ np.array([x, y], float)
+ np.array([math.cos(t), math.sin(t)]) * v) # 滑移反射
def mul(g, h):
(A1, b1), (A2, b2) = g, h; return (A1 @ A2, A1 @ b2 + b1)
def inv(g):
A, b = g; Ai = np.linalg.inv(A); return (Ai, -Ai @ b)
def key(g):
return tuple(np.round(np.r_[g[0].ravel(), g[1]], 6))
def orbit(gens, lim=2.2, cap=9000):
e = (I2.copy(), np.zeros(2)); seen = {key(e): e}; fr = [e]; out = [e]
gs = list(gens) + [inv(g) for g in gens]
while fr:
nf = []
for g in fr:
for h in gs:
k = mul(g, h)
if np.abs(k[1]).max() > lim: continue
kk = key(k)
if kk in seen: continue
seen[kk] = k; nf.append(k); out.append(k)
assert len(out) <= cap
fr = nf
return out
def basis(gens): # 平移子群的两条最短不共线向量(列向量)
g = orbit(gens)
ts = {(round(b[0], 4), round(b[1], 4)) for A, b in g if np.allclose(A, I2, atol=1e-6)}
vs = sorted([np.array(t) for t in ts if math.hypot(*t) > 1e-6], key=lambda v: math.hypot(*v))
B = []
for v in vs:
if all(abs(v[0]*u[1] - v[1]*u[0]) > 1e-3 for u in B): B.append(v)
if len(B) == 2: break
return (np.array(B).T, g)
def pt_order(g): # 点群阶(线性部分的不同个数)
return len({tuple(np.round(A.ravel(), 4)) for A, b in g})
def in_lat(v, B): # v 是否属格 ⟨B 的列⟩
c = np.linalg.solve(B, np.array(v, float))
return np.abs(c - np.round(c)).max() < 1e-4
# ---- [0] 晶体学限制:2cos(2πk/n) ∈ ℤ 只允许 n = 2,3,4,6 ----
ns = sorted({n for n in range(2, 25) for k in range(1, n) if math.gcd(k, n) == 1
and abs(2*math.cos(2*math.pi*k/n) - round(2*math.cos(2*math.pi*k/n))) < 1e-9})
print('[0] 允许的旋转阶', ns); assert ns == [2, 3, 4, 6]
# ---- [1] 带饰七群:点群阶应为 {1,2,2,2,2,4,4} ----
FZ = {'p1': [T(1, 0)], 'p11g': [G(0, 0.5)], 'p1m1': [T(1, 0), M(90)],
'p11m': [T(1, 0), M(0)], 'p2': [T(1, 0), R(180)],
'p2mg': [M(90), G(0, 0.5)], 'p2mm': [T(1, 0), M(90), M(0)]}
o7 = {k: pt_order(orbit(v, 2.35)) for k, v in FZ.items()}
print('[1] 带饰点群阶', o7); assert sorted(o7.values()) == [1, 2, 2, 2, 2, 4, 4]
# ---- [2] 面饰十七群:平移子群 = 设计格,且点群阶正确 ----
S3 = math.sqrt(3)/2
OB, RC, DI = [(1,0),(0.35,0.92)], [(1,0),(0,0.92)], [(1,0),(0.5,0.92)]
SQ, HX = [(1,0),(1*1.0,1)], [(1,0),(0.5,S3)]
def RT(la, ex): return [T(*la[0]), T(*la[1])] + ex
WL = {
'p1':(OB,RT(OB,[])), 'p2':(OB,RT(OB,[R(180)])),
'pm':(RC,RT(RC,[M(90)])), 'pg':(RC,RT(RC,[G(0,0.5)])),
'cm':(DI,RT(DI,[M(90)])), 'pmm':(RC,RT(RC,[M(90),M(0)])),
'pmg':(RC,RT(RC,[M(90),G(0,0.5)])), 'pgg':(RC,RT(RC,[G(0,0.5),G(90,0.46,0.5,0)])),
'cmm':(DI,RT(DI,[M(90),M(0)])),
'p4':(SQ,RT(SQ,[R(90)])), 'p4m':(SQ,RT(SQ,[R(90),M(0)])),
'p4g':(SQ,RT(SQ,[R(90),(refl(45), np.array([0.5,0.5]))])),
'p3':(HX,RT(HX,[R(120)])), 'p3m1':(HX,RT(HX,[R(120),M(90)])),
'p31m':(HX,RT(HX,[R(120),M(0)])), 'p6':(HX,RT(HX,[R(60)])),
'p6m':(HX,RT(HX,[R(60),M(0)])),
}
want = {'p1':1,'p2':2,'pm':2,'pg':2,'cm':2,'pmm':4,'pmg':4,'pgg':4,'cmm':4,
'p4':4,'p4m':8,'p4g':8,'p3':3,'p3m1':6,'p31m':6,'p6':6,'p6m':12}
for nm, (la, gs) in WL.items():
B, g = basis(gs)
ok = in_lat(la[0], B) and in_lat(la[1], B) and pt_order(g) == want[nm]
print('[2] %-4s 格一致=%s 点群阶=%2d' % (nm, ok, pt_order(g)))
assert ok
print('[2] 十七群:平移子群与点群全部对上')
# ---- [3] 商格判定法:错缝砖墙 = cmm,脚印带 = p11g ----
def reduce_to(p, B): # 沿周期方向约化到基本域
c = np.linalg.lstsq(B, np.asarray(p, float), rcond=None)[0]
return B @ (c - np.floor(c + 1e-9)) + (np.asarray(p, float) - B @ c)
def is_sym(A, cv, B, P):
for j in range(B.shape[1]):
c = np.linalg.lstsq(B, A @ B[:, j], rcond=None)[0]
if np.abs(A @ B[:, j] - B @ c).max() > 1e-6 or np.abs(c - np.round(c)).max() > 1e-6:
return False
src = {tuple(np.round(reduce_to(p, B), 6)) for p in P}
img = {tuple(np.round(reduce_to(A @ np.asarray(p, float) + cv, B), 6)) for p in P}
return img == src
# 错缝砖墙:1×1 砖,行 j 错半砖;周期格 ⟨(1,0),(0.5,1)⟩
Bw = np.array([[1.0, 0.5], [0.0, 1.0]])
wall = [(i + 0.5*(j % 2) + 0.5, j + 0.5) for j in range(-6, 7) for i in range(-6, 7)]
assert len({tuple(np.round(reduce_to(p, Bw), 6)) for p in wall}) == 1
rb = {'t(1,0)': (I2, [1,0]), 't(0.5,1)': (I2, [0.5,1]), 't(0,1)': (I2, [0,1]),
'x=0': (refl(90), [0,0]), 'y=0.5': (refl(0), [0,1]), 'y=0': (refl(0), [0,0]),
'g(0.5,-y)': (refl(0), [0.5,0])}
r = {k: is_sym(A, np.array(c, float), Bw, wall) for k, (A, c) in rb.items()}
print('[3] 错缝砖墙:')
for k in ('t(1,0)', 't(0.5,1)', 't(0,1)', 'x=0', 'y=0.5', 'y=0', 'g(0.5,-y)'):
print(' %-10s' % k, '保图案' if r[k] else '不保')
assert r['t(1,0)'] and r['t(0.5,1)'] and not r['t(0,1)']
assert r['x=0'] and r['y=0.5'] and not r['y=0']
print('[3] 平移格 ⟨(1,0),(0.5,1)⟩ 为有心长方格 + 两族正交镜面 -> cmm')
# 脚印带:左脚印 + 右脚印(镜像后平移一步);周期 2
Bf = np.array([[2.0], [0.0]])
fp = []
for k in range(-4, 5):
for dx, dy in ((0.0, 0.0), (0.6, 0.1), (0.2, 0.9)): fp.append((2*k + dx, dy))
for dx, dy in ((1.0, 0.0), (1.6, -0.1), (1.2, -0.9)): fp.append((2*k + dx, dy))
rf = {k: is_sym(A, np.array(c, float), Bf, fp) for k, (A, c) in {
't(2,0)': (I2, [2,0]), 't(1,0)': (I2, [1,0]), 'g(1,-y)': (refl(0), [1,0]),
'x=0': (refl(90), [0,0]), 'y=0': (refl(0), [0,0])}.items()}
print('[4] 脚印带:')
for k in ('t(2,0)', 't(1,0)', 'g(1,-y)', 'x=0', 'y=0'):
print(' %-10s' % k, '保图案' if rf[k] else '不保')
assert rf['t(2,0)'] and rf['g(1,-y)'] and not rf['t(1,0)'] and not rf['x=0'] and not rf['y=0']
print('[4] 只有平移与滑移 g(g²=t(2,0))-> p11g')
print('全部核对通过')
运行输出(节选):
[0] 允许的旋转阶 [2, 3, 4, 6]
[1] 带饰点群阶 {'p1': 1, 'p11g': 2, 'p1m1': 2, 'p11m': 2, 'p2': 2, 'p2mg': 4, 'p2mm': 4}
[2] p1 格一致=True 点群阶= 1
[2] p2 格一致=True 点群阶= 2
[2] pm 格一致=True 点群阶= 2
[2] pg 格一致=True 点群阶= 2
[2] cm 格一致=True 点群阶= 2
[2] pmm 格一致=True 点群阶= 4
[2] pmg 格一致=True 点群阶= 4
[2] pgg 格一致=True 点群阶= 4
[2] cmm 格一致=True 点群阶= 4
[2] p4 格一致=True 点群阶= 4
[2] p4m 格一致=True 点群阶= 8
[2] p4g 格一致=True 点群阶= 8
[2] p3 格一致=True 点群阶= 3
[2] p3m1 格一致=True 点群阶= 6
[2] p31m 格一致=True 点群阶= 6
[2] p6 格一致=True 点群阶= 6
[2] p6m 格一致=True 点群阶=12
[2] 十七群:平移子群与点群全部对上
[3] 错缝砖墙:
t(1,0) 保图案
t(0.5,1) 保图案
t(0,1) 不保
x=0 保图案
y=0.5 保图案
y=0 不保
g(0.5,-y) 保图案
[3] 平移格 ⟨(1,0),(0.5,1)⟩ 为有心长方格 + 两族正交镜面 -> cmm
[4] 脚印带:
t(2,0) 保图案
t(1,0) 不保
g(1,-y) 保图案
x=0 不保
y=0 不保
[4] 只有平移与滑移 g(g²=t(2,0))-> p11g
全部核对通过
脚本在读什么
[0] 把晶体的旋转限制(定理 1.7)落成一行筛法:只有 2cos(2πk /n ) 恰为整数时该阶旋转才可实现,筛得 {2, 3, 4, 6};换成几何版本就是「n ≥ 7 时两个最近像点的距离短于原向量」。
[1] 由生成元闭包出群,再数「点群阶」。带饰的点群被带轴压到 4 阶以下,七个群的阶恰为 {1, 2, 2, 2, 2, 4, 4}——这是定理 2.1 五步枚举的一张「体检单」。
[2] 对十七个群各做两件事:求平移子群的两条最短不共线向量、与设计格比对(这是定理 1.4「平移子群是格」的直接检验);再数点群阶。二者全部对上,等于把定理 3.3 的「格型」一栏整体复核了一遍。
[3] 是全册最值得亲手跑的一段:错缝砖墙不是 直觉以为的 pgg (它有镜面),也不是只认整数平移时的 pmm ——脚本发现斜半格平移 t (0.5,1) 保图案,平移格因而是有心长方格(菱形格),加上两族正交镜面,判为 cmm 。
[4] 用同一套「商格判定法」复核脚印带:只有平移 t (2,0) 与滑移 g ,且 g 2 = t (2,0) ,无镜面无旋转,正是 p11g 。
脚本的方法要点在 [3] 一段的 is_sym :判定一个等距是否为图案的对称,先看它把周期格映不映回自身(不映回即否决),再在商空间里比对点集——这样既快,又彻底避开了「窗口截断」造成的假阴性。全册四十三幅图的生成脚本用的是同一套群机器(把母题沿群作用铺满窗口),只是把「判定」换成了「绘制」。
附录 D 图案—群型索引
把本册的图案按群型重排,便于「按群索图」:想找同群伙伴,或想看某群实例,都从这张表出发。§2.2 与 §3.3 的图鉴为每个群各配一幅程序生成的标准样图(此处记作「§2.2 图鉴」「§3.3 图鉴」),下面只补列 §4 世界谱系与正文例题中的实例。
表 D-1 十七种面饰群在本册的出现位置
面饰群 本册实例出处
p1 §3.3 图鉴(手性母题的斜格自由铺)
p2 §3.3 图鉴
p3 §3.3 图鉴(三向风车星花网)
p4 §3.3 图鉴
p6 图 4-14 亀甲(手性变体);§3.3 图鉴
pm §3.3 图鉴
pg §3.3 图鉴
cm §3.3 图鉴(菱格网目)
pmm §3.3 图鉴(对齐窗棂方格)
pmg §3.3 图鉴
pgg §3.3 图鉴(两族滑移)
cmm 图 4-10 方胜纹;例 3.7 错缝砖墙;§3.3 图鉴
p4m 图 4-6 阿尔罕布拉八角星、图 4-11 八达晕、图 4-12 七宝纹
p4g 图 4-7 波斯 girih、图 4-15 印度 kolam
p3m1 §3.3 图鉴(3 重中心全在镜面)
p31m §3.3 图鉴(一半中心让位)
p6m 图 4-8 摩洛哥 zellige、图 4-13 麻の葉
表 D-2 七种带饰群在本册的出现位置
带饰群 本册实例出处
p1 图 4-2 希腊回纹;§2.2 图鉴
p11g 图 4-4 凯尔特式连续结带;例 2.4(L 花边);§2.2 图鉴
p1m1 图 4-3 镜像双钩回纹;§2.2 图鉴
p11m 图 4-16 西非肯特布条;§2.2 图鉴
p2 图 4-1 埃及莲花带;§2.2 图鉴
p2mg §2.2 图鉴(L 花边加竖直镜面后的近亲)
p2mm 图 4-5 伊斯兰几何饰带、图 4-9 中国回纹;§2.2 图鉴