快捷搜索:  汽车  科技

仿射等价类:仿射变换巴恩斯利蕨

仿射等价类:仿射变换巴恩斯利蕨定义中点变换仿射变换生成函数FSM例如n点为(x0 y0),目标点为(cx cy) 那么求中点的变换他们坐标相加除以2,对应的仿射变换如下:中点仿射变换定义仿射变换生成函数

仿射变换

仿射等价类:仿射变换巴恩斯利蕨(1)

仿射变换

上图是从第n个元素变换到第n 1个元素的公式,其中a,b,c都为二维向量,如果c为零,则就成为线性变换,线性变换是仿射变换的特例,定义了a,b,c向量的值,就定义了一个仿射变换

示例

定义一个仿射变换,目标位置为输入点到目标点的中点位置

仿射等价类:仿射变换巴恩斯利蕨(2)

示例

例如n点为(x0 y0),目标点为(cx cy) 那么求中点的变换他们坐标相加除以2,对应的仿射变换如下:

仿射等价类:仿射变换巴恩斯利蕨(3)

中点仿射变换

定义仿射变换生成函数

仿射等价类:仿射变换巴恩斯利蕨(4)

仿射变换生成函数FSM

定义中点变换

仿射等价类:仿射变换巴恩斯利蕨(5)

起点为(0,0),目标为(1,1)

仿射等价类:仿射变换巴恩斯利蕨(6)

多次迭代描点

这个仿射变换的特征就是多次迭代后生成的点越来越接近目标,这个就是确定的仿射变换规则,如何生成分形呢,分形就是混沌的边缘,要引入不确定性,如何实现呢

多个仿射变换随机组合

这里我们定义三个中点仿射变换,选取三个目标点A.(0,0),B.(1,0),C.(0,1),根据上面的中点仿射变换定义出三个仿射变换:

仿射等价类:仿射变换巴恩斯利蕨(7)

三个求中点仿射变换

定义了一个随机过程,是的每次调用变换的时候随机给出三个仿射变换中的一个,这里的几率是平均分配,接下来描点看看效果:

仿射等价类:仿射变换巴恩斯利蕨(8)

描点100个,大致是在三个目标点组成的三角形内部

仿射等价类:仿射变换巴恩斯利蕨(9)

描点1000个,貌似有些死角的地方

仿射等价类:仿射变换巴恩斯利蕨(10)

10000个点,有规律了

难道就是传说中的谢尔宾斯基三角形,只不过原版是使用的正三角形,点描的越多,图形越精细

仿射等价类:仿射变换巴恩斯利蕨(11)

10万个点

好像点太大了,细节被遮住了,下面把点缩小试试

仿射等价类:仿射变换巴恩斯利蕨(12)

同样10万个点,但是细节更好了

巴恩斯利蕨

巴恩斯利蕨生成原理和分形三角形类似,不同的是三角形只需要三个仿射变换,巴恩斯利蕨是四个变换,同时每个变换的执行概率要精心设计

仿射等价类:仿射变换巴恩斯利蕨(13)

根据概率随机执行变换

网上找一组参数

仿射等价类:仿射变换巴恩斯利蕨(14)

填入参数,生成规则

仿射等价类:仿射变换巴恩斯利蕨(15)

巴恩斯利蕨,描点10万

猜您喜欢: