返回列表 回复 发帖

初等函数构建的一个分形(无意中认识的)

本板块是用代数法来研究分形的板块,扫描用的是代数法。
    ---------从震荡Julia集合开始,通常这里的c=-0.5+0.5i
                              色彩经震荡后会有一种悦动的感  
                        
                          点击:代数法扫描方法介绍


                           代数法扫描法介绍2
   
     我无意中发现了一个用初等函数构建的分形,文件在这里:
http://www.inrm3d.cn/viewthread. ... age%3D1&page=16
(那里贴出了中心放大到1万倍,和200万倍的图片)
这个分形很奇特:
1.只在中心附近处是分形
2.具有无限的层次
3.自相似性。
下面是放大100倍的图片。

我认为中心处是分形,不知各位是不是这么认为?
如果各位认为这是分形,那么构建分形的方法就太多了,而且用初等函数就可以构建很多的分形。
下面我来定义这个分形:
Osc={(x,y)|z=sin(1/sqrt(x^2+y^2))},函数可以改为任意的函数,只要能在原点产生震荡(oscillate)就行。这个分形是由函数
z=sin(1/sqrt(x^2+y^2))在原点附近的等势线构成的。
事实上sin(1/x)的图形在原点附近震荡,在直角坐标系原点附近就是分形,
因为在原点附近sin (1/x)的图形具有明显特征:1.无限的层次(真正的无限)。2.局部和整体的自相似性。典型的weierstrass函数,其实就是一种震荡函数(锯齿状),我想weierstrass函数同样可以用来上色。
因为w函数在一个小区间内由无数的峰值,让峰值和颜色面板色带的端点值对应,就可以凸显色彩。
由兴趣的可以试试。上面的震荡分形在中心处的图看起来并不清晰,我想如果能够构建迭代用迭代的有限去取代无限,中心处的图可能会看的清楚。不知道能不能行。这个震荡图中心点仿佛有无穷的能量发出,那一圈圈力线,好象在告诉它的能量是无穷的,力线永无此境,在放大还是那些力线。
最后,如果这个函数大家认为不是分形的话,起码可以说它是准分形。
猜想:此时此刻,我忽然想到了Fourier级数,放宽一点就是三角级数,它们是分析声音的有力工具,声音的图形不就是有许多锯齿组成的吗,那些锯齿就是峰值,如果用三角级数上色会怎么样?
三角级数是形如: c+(a1siint+b1cont)+(a2sin2t+b2cos2t)+...,的级数,特殊的三角级数有:
a1cost+a2cos2t+a3cos3t+...,以及b1sint+b2sin2t+b3sin3t+...,用三角级数上色会不会造成较强的视觉冲击呢?我猜会。答案如何,实验后就知道了。

洞中的那几个小的红色圆环放大后就是1楼的那个形如磁力线的图形。
这个洞是f=z^2+c进行迭代时,数列(xn,yn)的轨道,这个洞正好是周期性运动形成的,
如过让迭代点显示,那些迭代点在这里正好形成一个类似于风车装的轨道。这是可以造洞的原因。
Julia集合被震荡的图

图中红色的一圈圈圆是初等函数sin(1/r)生成的震荡分形。若隐若现的蓝色是Julia集合在c=-0.5+0.5I的图形。



这是上图中红色圆环中心放大1万倍的图。以就是1楼中的那个图。
看不清是因为它是无穷大造成的。真正的无限的层次。
以上几个图在颜色面板中的色宽定义[0,1]

震荡Julia.gsp (34.56 KB)

震荡Julia红色圆环中心放大10000倍.gsp (33.96 KB)




这些图都是第一个图中J集合的放大。J集合是指我们常说的边界部分,内部不是J集合,刚接触J集合时,我也误认为内部一属于集合,后来看了一点分形书,才知道J集合不含内部,就是我们常说的边界部分。有的学者干脆J集合和内部一起叫充满的J集合,而充满的J集合的边界叫J集合,我们常说J集合的边界很丰富,因为我们心中的边界才是真正的J集合,内部不是,上面的第一图J充满的J集合的内部,那个在洞中的一圈圈红色的圆,它就在我们常说的J集合的内部,但它真的不是J集合,1楼有它放大1万倍的图,这证明了J集合正确的理解应该就是我们常说的边界部分。tan(1/x)的值在极值间来回的变动,按理上色图象应该有明显的跳跃感,但是当我们让锯齿离的很近时,跳跃的频率加快,色彩的台阶就会背抹掉不少。分形迭代到后面,数据的变化从整体上看是微小的(玩分形时可以看到变化总是在小数的后若干位变化),用tan(1/x)去震荡数据,实现数据的放大,放大的数据在用来上色,实现区分不同的色彩。如果不放大数据,数据都在同一个色对应的区间内,那将是一遍色,放大数据是为了使数据位于不同的颜色区间,以实现多种颜色表达图象。通过对数据的平移可以把数据从一个色区间移动到另一个色对应的区间。放大是把数据的差异放大。
当然如果数据本生就位于不同的色区间,数据间有明显的差异,放大数据就没必要了。
上图中的黑色意味着R=G=B的值是0或负数,红色部分意味着R≥1,G=B=0,蓝色部分意味着R=0,G=0,B≥1.

====
冷热色调形成强烈的对比,冷热色调放在一起可以给人一种较强的视觉冲击力。如果全是暖色调或者全是冷色调放在一起色彩必定死板。改革开放前时全国人民一个装就是死板的典型代表。

震荡Julia放大7000倍.gsp (34.12 KB)


图中的黄色圈意味着R=1,G=1,B=0,在读书时学过一点美术,现在还能记住一点点。
图中那个讨厌的淡淡的等势圈,得想法干掉它。现在如果加强那淡淡的蓝色很容易办到,但是加强它的同时,等势圈也被加强了,反而不好看了。所有这些扫描都是基于代数法的全域扫描(全区域---指的是轨迹运动的关键点运动的全部区域)。全域扫描是一种
增加了一个特殊相似变换的扫描。这种震荡上色的方法与分形没有直接的关系,就是一个普通的轨迹就可以使用这种方法。分形反而是这种上色方法的应用。
我的学习心得是值域与颜色面板色宽的交集非常重要,这个交集可以叫主值区间,确定主值区间对能够尽量的进行控制性上色异常重要。有了主值区间上色时控制的成分居多,没有主值区间上色时运气的成分居多。然而要确定一个函数的值域不是那么好办的,想起来容易,做起来难度大,由于我们通常是用距离函数和初等函数复合上色,而初等函数的值域可以用初等函数的图形给出,这样通过观察初等函数的图形可以大致知道值域的范围,这就为调试色彩,提供了一条理论指导,尽量的避免了盲目调参。通常改变初等函数的值域方式如下:af(x)+b.
做了这些着色探究,我算明白了颜色能够突出的显示出来,就是函数的峰值作用的结果。
没有这些峰值只会产生平凡的过度颜色。如上图中间那块绿色的玉,它就没有峰值的作用过度是平凡的,蓝色的玉的靠边出突然出现了黄色的图案,那就是峰值的作用,突变。
玉的边界突然变黑,然后又突然变绿,按也是峰值(极小值)的作用。正是这些一个有一个的峰值造就了立体感。整块玉以冷色调为主,峰值有产生了黄色的圈装暖色调,进一部的强化了冷色调这个主调。
绿色代表一种中性色,所以这块玉在冷静中透着一点热烈。
震荡上色系列实验图片
  震荡实值是一种放大数据的技术。
把形如函数f(1/x),周期函数g(x)复合,用它们配合距离函数上色。
通过绘制函数的波形,观察波形,达到一定程度的控制调色。
三角级数,负幂级数,trunc,x-trunc都可以用来构造震荡。
本帖从到尾只用了一个模板。其中c=-0.5+0.5i
写到这儿本帖也该收尾了。---END.














震荡Julia-sj3-x-trunc(x).gsp (51.22 KB)

震荡Julia-sj4-cos(x-trunc(x)).gsp (51.03 KB)

震荡Julia-sj1.gsp (51.77 KB)

震荡Julia-sj2.gsp (51.04 KB)


我喜欢用同一个模板,从不同的角度去研究问题



外部的圆环可以改变成其它的环状。
我本想参考引入et,但我发现代数法没这个必要。距离函数描述J集合的内部足够精致了。

Julia set 不同的方法加入震荡因子.haozip01.zip (200 KB)

Julia set 不同的方法加入震荡因子.haozip02.zip (200 KB)

Julia set 不同的方法加入震荡因子.haozip03.zip (91.36 KB)

上色的本质是什么?
1.从绘制空间曲面说起:
设P(x,y)是平面内一点,建立映射z=f(P),要绘制曲面就是在在空间坐标系里面绘制点T(x,y,z).
这个点T的轨迹就是空间曲面。
2.换一个角度理解空间曲面。
对于上面的空间曲面,我们通过画板的参数控制颜色面板,再建立一个映射:让上面的空间曲面的z坐标
对应相应的颜色。并让空间坐标系的z轴退化为一个点,这样就在平面xy内通过颜色的浓淡描绘出了空间曲面。不过这个空间曲面是通过颜色来表达的,所以叫做函数z=f(P)的色图。
这就是单参数上色的原理。
我把这个函数的值域和颜色面板的的色宽的交集叫主值区间。值域超过色宽的那部分区间叫常色区间。
3.又一类空间曲面---三参数上色(RGB,HSV)
建立映射z=f(P),z=g(P),Z=h(P).由这三个映射确定一个新的映射color--->向量(f(P),g(P),h(P)).
让这个向量通过颜色面板和颜色建立对应关系,把这个颜色送给点P,那么点P的轨迹色变就是空间曲面的一种表现形式。
说到底用颜色的变化来表现空间曲面和平常的空间曲面的画法在思想上是相通的。
我们甚至可以对点P施加变换后,在把颜色向量(f(P),g(P),h(P)).送给点P的像点。从而创建出另一种立体的空间曲面。
因此上色前,首先要想到我们在绘制空间曲面,只是我们的三维坐标系的z轴通常被压缩成了一个点吧了。想明白了上色的机理后,就可以凭自己的想象去绘制想看到的函数的色图了。
4.上色与分形的关系
  分形只是上色的一个应用吧了。大家觉得分形难,根本在于对上色平时都没去研究,所以研究上色不要从分形开始,而把上色的研究结果过度到分形,这样做可以直接抓住学习的本质,打个比方玩分形相当于读研,研究上色相当于读大学,没读完大学就去读研,不难才怪。比如说分形里面老在说逃逸算法,其实可以脱开分形,自定义个区域为逃逸去,用一条随便画的一条线段扫描,间单的做一遍就知道什么是逃逸区域算法了。特别要练习一下无穷大的使用和undefined的使用。有的网友错误的理解为要上出美丽的色彩要分形才可以办到,不是分形办不到。记住一点分形只是上色的一个应用。
返回列表