1 形状
1.1 形状代数表
Stiny在1992年系统地提出了形状代数$U_{ij}$,对形状文法进行了扩展。
理解形状代数需要离散数学的知识
形状代数阶梯表
$U_{00}$ | $U_{01}$ | $U_{02}$ | $U_{03}$ |
---|---|---|---|
$U_{11}$ | $U_{12}$ | $U_{13}$ | |
$U_{22}$ | $U_{23}$ | ||
$U_{33}$ |
代数$U_{ij}$ 的含义是在$j$维上操作$i$维形状。$i$维形状的边界是$U_{i-1,i}$中的形状,因为$i$维形状不能被小于$i-1$维的形状分割成更多部分:点分割线,线分割面,面分割体。形状是基本元素的有限集或空集。基本元素是极大元:任意两个基本元素彼此独立,不互相包含。
具体从包括的形状来说, $U_{0j}$ 是点, $U_{1j}$ 是线, $U_{2j}$ 是面, $U_{3j}$ 是体。所以阶梯表所包含的形状是:
点 | 线上的点 | 面上的点 | 体上的点 |
---|---|---|---|
线 | 面上的线 | 体上的线 | |
面 | 体上的面 | ||
体 |
1.2 形状代数运算
使用$\{R\}_U$表示关系运算,则
- $U_{ij}$中的形状通过蕴含$\leq _U$关系运算而形成偏序集(即某些形状可能是另一些形状的一部分,也可能不是);
通过布尔关系运算和$+_U$,差$-_U$组合,形成有补分配格。
$U_{ij}$在j维的欧式变换下是封闭的。
极大元、蕴含、和、差可以有多种定义方式:
一种是直接通过嵌入定义,这是基本元素的基本关系。例如一条短线嵌入在另一条长线中。但这种关系太过于基本了,导致实现上述那些运算比较复杂且内隐;
另一种方法是显式定义。按照基本元素的嵌入关系,构造化简规则,定义上述运算。和或者差就可以用来定义蕴含。
2 标记
和形状文法中的标记一样,定义和形状的定义是类似的。标记用于区分相同的形状,或建立不同形状的联系。
标记代数是标记表中的标记、布尔运算组成的代数系统,对欧式变换封闭。$V_{ij}$就将标记和形状结合到一起,形成新的代数系统。标记形状记为$(e,a)$,其中e是$U_{ij}$中的形状,a是标记。
3 权重
这里从视觉效果给点加上了半径,线加上了粗细,面和体加上了填充色——这些就是权重。
权重也可以进行运算。布尔和显然是取了权重大的部分和剩下的部分,如细线和粗线有一部分重合,那么布尔和结果就是全部粗线和细线剩下的部分,即$u+v=\max \{ u,v \}$。布尔差的定义则要复杂一些,对于 $u-v$,如果 $u>v$,则结果就是代数差;否则为0。
4 带权形状
将标记引入形状得到标记性状,那么将权重引入形状则得到带权形状代数$W_{ij}$。从权重的定义已经可以看到带权形状代数的性质。
这样,便将形状、标记、权重统一在了一个理论框架内,其中的运算为蕴含、布尔和、布尔差,欧式变换。U,V,W可以进行组合,形成更复杂的结果。
5 形状文法
有了形状代数的定义,形状文法就可以在其基础上扩展了。形状规则$A \to B$作用于形状C时,其运算机制为$[C -_X t(A)] +_X t(B)$,其中$-_X$是X上的布尔差运算,$+_X$是X上的布尔和运算,X是U,V,W中的任何一个。
参数化形状文法中,A(x)是形状框架,x是变量的有限集(可以是空集)。F决定变量x的取值。单一的U,V,W代数中,变量的取值是基本形状,或标记形状/带权形状的有序对;由U,V,W组合而成的代数中,变量的取值可以使多种类型的有序对。
带权形状$W_{ij}$中,F给A(x)中变量的赋值是基本元素和权重的有序对(e,u)。但此时F[A(x)]可能不是形状(为什么?)。此时,令$A(i + 1) = A(i) +_W \{(e_{i+1}, u_{i+1})\}, A(0)=\varnothing$。通过此布尔和递推公式确保F[A(x)]是形状。
6 扩展
6.1 非直线形状和嵌入空间
Jowers指出,$U_{ij}$形状代数实际上是直线形状(维度为i)嵌入到不同维度欧式空间中(维度为j)。这会带来一些问题:
- 直线形状是自相似的,直线可以以无限的方式嵌入(欧式变换)到另一直线中,任意两直线(方形平面、立方体等)互为子集;但是对于非直线形状,如圆弧,必须是短圆弧才可以嵌入到长圆弧,虽然嵌入放肆无限,但互为子集不成立。抛物线更甚——嵌入的方式都已经不是有限的了(只有两种方法,即嵌入到轴对称的两个位置)。
- 视觉嵌入和解析嵌入对直线形状是绝大部分时候是相同的,但对于非直线形状,除非解析式相同,否则视觉嵌入和解析嵌入不可能相同。虽然大牛Ramesh Krishnamurti提倡能够清晰描述形状的解析嵌入,但视觉上的相似在设计中很重要。而为了统一二者,只能通过样条曲线拟合或计算机视觉的方法来实现,不过尚未对形状代数进行扩展。
更进一步,考虑非欧空间的情况,比如圆锥空间,直线可以仅通过旋转就和各种圆锥曲线互相转化。
这些都是$U_{ij}$所不包括的内容。所以形状代数有待进一步发展完善。
6.2 形状分解
可以用有限元素将一个形状进行分解,于是可以用有限的部件集来描述形状的分解。于是问题就来了:
- 集合可以通过交并差来扩展(我认为这不是问题,作者也没有详细讨论);
- 形状的分解从哪里来?计算。计算生成形状。传统的CAD系统都是用形状分解出来的部件来描述形状。不过Jowers认为,并不是所有的计算都生成形状。
关于形状分解从哪里来,我有一些自己的想法,将在以后进行介绍。
参考文献
[1] Stiny G. Weights. Environment and Planning B: Planning and Design. 192. 19: 413-430.
[2] Jowers I, Earl C. Extending the Algebras of Design. Nexus Network Journal. 2015. 17(3): 947-962.
[3] Jowers I, Earl C, Stiny G. Shape Computations Without Compositions. International Conference on Computer-Aided Architectural Design Futures. Singapore. 2017: 348-365.