矩阵-图案演示
Aarati Akkapeddi, Rituals of Recursion

20260719 修改自:John Golden — 2025年6月10日 - 上午12:41 的 Kolam Grid – GeoGebra
#基本元素
f=线段((0,1),(1,0))
g=线段((0,1),(1,2))
h=线段((2,1),(1,2))
l=线段((2,1),(1,0))
c: 圆弧((1,1),(0,1),(1,0))
d: 圆弧((1,1),(1,2),(0,1))
e: 圆弧((1,1),(2,1),(1,2))
k: 圆弧((1,1),(1,0),(2,1))
n=9
m1=序列(序列(区间随机数(1,2),i,1,n),j,1,n)
l1={c,f}
#平移左下角图案-圆弧,2,,以下两个等价
m2=序列(序列(平移(元素(l1,元素(m1,i,j)),(2 (i-1),2 (j-1))),i,1,n),j,1,n)
m3=序列(序列(平移(如果(元素(m1,i,j)-1≟0,c),(2 (i-1),2 (j-1))),i,1,n),j,1,n)
#随机矩阵
m4=序列(序列(区间随机数(1,2),i,1,n),j,1,n)
m5=序列(序列(区间随机数(1,2),i,1,n),j,1,n)
m6=序列(序列(区间随机数(1,2),i,1,n),j,1,n)
#m7左上角、m8#右上角、m9#右下角 圆弧
m7=序列(序列(平移(如果(元素(m4,i,j)≟1,d),(2 (i-1),2 (j-1))),i,1,n),j,1,n)
m8=序列(序列(平移(如果(元素(m5,i,j)≟1,e),(2 (i-1),2 (j-1))),i,1,n),j,1,n)
m9=序列(序列(平移(如果(元素(m6,i,j)≟1,k),(2 (i-1),2 (j-1))),i,1,n),j,1,n)
#左下角斜线、#m7左上角、m8#右上角、m9#右下角 圆弧
m10=序列(序列(平移(如果(元素(m1,i,j)≟2,f),(2 (i-1),2 (j-1))),i,1,n),j,1,n)
m11=序列(序列(平移(如果(元素(m4,i,j)≟2,g),(2 (i-1),2 (j-1))),i,1,n),j,1,n)
m12=序列(序列(平移(如果(元素(m5,i,j)≟2,h),(2 (i-1),2 (j-1))),i,1,n),j,1,n)
m13=序列(序列(平移(如果(元素(m6,i,j)≟2,l),(2 (i-1),2 (j-1))),i,1,n),j,1,n)
#中间的图案,m15方形点列表,m16圆形点列表
m14=序列(序列(区间随机数(1,2),i,1,n),j,1,n)
m15=序列(序列(如果(元素(m14,i,j)≟1,(2 i-1,2 j-1)),i,1,n),j,1,n)
m16=序列(序列(如果(元素(m14,i,j)≟2,(2 i-1,2 j-1)),i,1,n),j,1,n)
aspect=((x(角点(5)))/(y(角点(5))))
元素(M,1,1,1)
button1
更新作图()
进阶改进
#将基本图案放进矩阵,不知道为什么不能一条指令就搞定
S={{c,d,e,k},{f,g,h,l}}
M={m1,m4,m5,m6}
l21=序列(序列(序列(平移(如果(元素(M(k),i,j)≟1,元素(S,1,k),元素(S,2,k)),(2 (i-1),2 (j-1))),i,1,n),j,1,n),k,1,4)
l22=序列(序列(序列(平移(如果(元素(M(k),i,j)≟2,元素(S,2,k),元素(S,1,k)),(2 (i-1),2 (j-1))),i,1,n),j,1,n),k,1,4)
#再加上中间的图案,m15方形点列表,m16圆形点列表,即可组成图案