任意多边形序列变化-矩阵法1-点列表变换
20260720 创建
#初始任意多边形(可自行修改顶点)
#poly0 = {(1,1), (4,0), (5,2), (2,3), (1,2)}
poly0 = {A,B,C,D,E}
# 边数
n = 长度(poly0)
#分点比例滑动条
λ = 滑动条(0, 1, 0.01, 0.2)
# 最大迭代层数
k_max = 10
m= 滑动条(0, k_max, 1, 0)
P0={}
M={}
MatrixLayers ={}
polys={}
polyM0={}
# 1. 构造初始坐标矩阵(2行n列,每列一个顶点的x,y)✓
P0 = 转置(映射({x(p), y(p)}, p, poly0))
#2. 构造n阶循环变换矩阵M(n阶方阵)
M = 序列(序列(如果(j == i, 1-λ, j == mod(i, n)+1, λ, 0), j, 1, n ), i, 1, n)
#3. 生成所有迭代层的坐标矩阵
MatrixLayers = 序列(P0 * M^k, k, 0, m)
# 4. 坐标矩阵转回点列表并绘制
polys=序列(序列( (元素(MatrixLayers ,p,1, j), 元素(MatrixLayers ,p,2, j)), j, 1, 长度(元素(MatrixLayers , p,1)) ),p,1,m)
polyM0=序列(多边形(元素(polys,j)),j,1,m)
#第K个
k = 滑动条(0, k_max, 1, 0)
polyMk=polyM0(k)
要将点转化为2行n列矩阵,应用n阶循环变换矩阵M(n阶方阵)变换后,再次将矩阵变换为点
不足
步骤较复杂
只能针对点进行变换
n 阶组合矩阵 M(n×n)
右乘坐标矩阵,作用于「顶点维度」
新顶点由所有原顶点线性组合得到,依赖相邻顶点
图形形状会发生收缩、变形(任意多边形)
仅用于顶点序列的重构、定比分点、迭代分形