任意多边形序列变化-矩阵法2-图形应用矩阵
20260720 创建
poly0V = {A,B,C,D,E}
poly0=多边形( {A,B,C,D,E})
Pc=重心(poly0)
Pt=(0,0)
# 边数
n = 长度(poly0V)
#分点比例滑动条
λ = 滑动条(0, 1, 0.01, 0.2)
#缩放比例滑动条
factor = 滑动条(0, 1, 0.01, 0.2)
# 最大迭代层数
k_max = 30
m= 滑动条(0, k_max, 1, 0)
Mtype= 滑动条(1, 3, 1, 0)
#分点比例滑动条
alpha = 滑动条(0, 360°, 1° )
MT={}
Mr={}
赋值(Pt,(x(Pc),y(Pc)))
MT={{1,0,x(Pt)},{0,1,y(Pt)},{0,0,1}}
Mt=逆反(MT)
#MR={{cos(alpha),sin(alpha)},{-sin(alpha),cos(alpha)}}
MR={{cos(alpha),sin(alpha),0},{-sin(alpha),cos(alpha),0},{0,0,1}}
Mr=逆反(MR)
MD={{factor,0,0},{0,factor,0},{0,0,1}}
Md=逆反(MD)
MM=MR MD
polyM=序列(应用矩阵(MT (MR MD)^(k) Mt,poly0), k, 0, m)
polyM2=序列(应用矩阵(MM^k,poly0), k, 0, m)
polyM3=应用矩阵(MT, 序列(应用矩阵(MM^k, 应用矩阵(Mt, poly0)), k, 0, m))
#polyM4=序列(应用矩阵(MT (MR MD)^(k) Mt,poly0), k, 0, m)
要先将中心移到坐标原点在进行旋转和位似变换,最后再平移到原来的位置,可应用到集合对象,任意多边形。
变换矩阵都是三阶方阵
不足之处,适用于旋转和位似,如果平移变换较多的画就反而复杂。
变换后的多边形不一定与上一层的图像接触或者有交点,多边形的角可能会伸出外边。
三阶仿射矩阵(3×3)
左乘坐标矩阵,作用于「坐标维度」
每个点独立做坐标变换,和其他顶点无关
整体刚体 / 相似变换,图形形状不变
任意点集、任意图形都适用