设一个形状由一组n个积分点组成,这样所有点都与至少一个其他点相邻,并且所有点都通过邻接直接或间接连接。
设两点相邻,当且仅当点A和点B之间的距离由平行于三维空间中笛卡尔轴之一的单位向量给出时。
例如,如果d是2,n是2,则形状可以由点(0,0)和(1,0)组成。这些点之间的距离就是平行于x轴的单位向量(1,0)。
当且仅当存在某个旋转单位矩阵R和某个平移向量T时,X和Y两个形状被认为是相同的,其中点集X*R+T等于点集Y。单位旋转R必须具有行列式1。
R的行列式-1被视为“翻转”,因此是不允许的。然而,应该注意的是,总是存在一个R[d+1],使得R[d+1]=[[R0][0 det(R)]],它总是有一个行列式1。
因此,当考虑高阶维度时,现在可以在较低维度中进行翻转。换句话说,形状只有在必须使用至少d个维度表示时才是单面的。
基数向量集由与给定维度d的笛卡尔轴平行的所有单位向量组成。因此,当d为2时,基数向量集包含{(1,0)(0,1)(-1,0),(0,-1)}。
然后,我们递归地定义形状(n,d)如下:
形状(1,d)由包含d-空间中单个点(0,0,…,0)的单个集组成,例如,形状(1、d)={{(0,O,…,O)}}表示所有d。
形状(n+1,d)由以下生成的所有形状组成:
对于形状(n,d)中的每个形状S:
对于S中的每个点P:
对于基数向量集中的每个向量V:
如果P+V不在S中:
形状(n+1,d)包含由S和{(P+V)}的并集组成的形状
a(1/2 n*(n-1)+d)=集合Shape(n,d)中的形状数。