Board logo

标题: 初等函数构建的一个分形(无意中认识的) [打印本页]

作者: myzam    时间: 2012-10-27 12:09     标题: 初等函数构建的一个分形(无意中认识的)

本板块是用代数法来研究分形的板块,扫描用的是代数法。
    ---------从震荡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+...,用三角级数上色会不会造成较强的视觉冲击呢?我猜会。答案如何,实验后就知道了。

作者: myzam    时间: 2012-10-27 16:31


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

Julia集合被震荡的图

图中红色的一圈圈圆是初等函数sin(1/r)生成的震荡分形。若隐若现的蓝色是Julia集合在c=-0.5+0.5I的图形。
作者: myzam    时间: 2012-10-27 17:45




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

附件: 震荡Julia.gsp (2012-10-27 17:56, 34.56 KB) / 下载次数 1480
http://inrm3d.cn/attachment.php?aid=18799&k=0520f6f5a753a3d966cbe16951151c5f&t=1714666610&sid=T0Qm8O

附件: 震荡Julia红色圆环中心放大10000倍.gsp (2012-10-27 20:26, 33.96 KB) / 下载次数 1557
http://inrm3d.cn/attachment.php?aid=18801&k=0190599a1d2b2eb1aa5eb4dd705e9bca&t=1714666610&sid=T0Qm8O
作者: myzam    时间: 2012-10-27 19:20




这些图都是第一个图中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 (2012-10-27 19:20, 34.12 KB) / 下载次数 1391
http://inrm3d.cn/attachment.php?aid=18800&k=9c9234aec20c652597e5e251d9829ac8&t=1714666610&sid=T0Qm8O
作者: myzam    时间: 2012-10-27 23:41


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

震荡上色系列实验图片
  震荡实值是一种放大数据的技术。
把形如函数f(1/x),周期函数g(x)复合,用它们配合距离函数上色。
通过绘制函数的波形,观察波形,达到一定程度的控制调色。
三角级数,负幂级数,trunc,x-trunc都可以用来构造震荡。
本帖从到尾只用了一个模板。其中c=-0.5+0.5i
写到这儿本帖也该收尾了。---END.
















附件: 震荡Julia-sj3-x-trunc(x).gsp (2012-10-28 18:27, 51.22 KB) / 下载次数 1495
http://inrm3d.cn/attachment.php?aid=18806&k=9589c94bea3700e9e55e1715516904a0&t=1714666610&sid=T0Qm8O

附件: 震荡Julia-sj4-cos(x-trunc(x)).gsp (2012-10-28 18:27, 51.03 KB) / 下载次数 1674
http://inrm3d.cn/attachment.php?aid=18807&k=3c1bd0bbd4b68bd660814ace6454a54b&t=1714666610&sid=T0Qm8O

附件: 震荡Julia-sj1.gsp (2012-10-28 18:27, 51.77 KB) / 下载次数 1546
http://inrm3d.cn/attachment.php?aid=18808&k=acad3d066a31b75bf6b9854c949ea317&t=1714666610&sid=T0Qm8O

附件: 震荡Julia-sj2.gsp (2012-10-28 18:27, 51.04 KB) / 下载次数 1323
http://inrm3d.cn/attachment.php?aid=18809&k=b3e6bdfe53d7da8ca5e30f06fbe0c11b&t=1714666610&sid=T0Qm8O
作者: myzam    时间: 2012-10-31 22:16



作者: myzam    时间: 2012-11-2 13:35     标题: 我喜欢用同一个模板,从不同的角度去研究问题



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

附件: Julia set 不同的方法加入震荡因子.haozip01.zip (2012-11-2 18:06, 200 KB) / 下载次数 1354
http://inrm3d.cn/attachment.php?aid=18832&k=fa99a256ac6c7dc70bb1ddd91acc2747&t=1714666610&sid=T0Qm8O

附件: Julia set 不同的方法加入震荡因子.haozip02.zip (2012-11-2 18:06, 200 KB) / 下载次数 1515
http://inrm3d.cn/attachment.php?aid=18833&k=8542f9c49182e4eed700224d24302daf&t=1714666610&sid=T0Qm8O

附件: Julia set 不同的方法加入震荡因子.haozip03.zip (2012-11-2 18:06, 91.36 KB) / 下载次数 1475
http://inrm3d.cn/attachment.php?aid=18834&k=ccebd0272c40049d330c87e19a875e46&t=1714666610&sid=T0Qm8O
作者: myzam    时间: 2012-11-2 22:12

上色的本质是什么?
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的使用。有的网友错误的理解为要上出美丽的色彩要分形才可以办到,不是分形办不到。记住一点分形只是上色的一个应用。
作者: myzam    时间: 2012-11-3 00:36

用震荡描述分形的外部,用距离函数描述分形的内部
下列图片和上面的的图片都是基于同样的一个模型:f(z)=z^2+c,c=-0.5+0.5i的J集合。















上面的图片只用了一个距离即象距离,图象显得工整相当于是国画中的工笔画,如果把初象距离,边界距离和逃逸距离都用上,就会产生一种类似国画中那种写意的色彩,相当于国画中的写意画。
从函数的观点来处理上色,如果上色时同时绘制出函数图象,通过上下平移函数的图形改变函数的值域或通过调整三角级数部分和的系数,当然调整这些参数时要观察函数的图形变化,并把扫描线调到最粗,两者结合就可以比较好的控制上色,这样上色就在一定范围内成为可控制上色,极大的减少了运气上色。上色就像绘制函数的图象一样,只要敢想就可以创建出奇形怪状的色图来。
我使用的基本震荡因子是1/sqrt(x^2+y^2),这个因子可以变形,比如变成1/sqrt(|cosx|^2+|siny|^2),震荡的关键是要出现1/0.
我使用的r,g,b的基本构造是t*sin[(sqrt(xn^2+yn^2)/sqrt(x^2+y^2))].
在这个基本构造的基础上发展成三角级数部分和上色,我本意是使用Fourier 级数,但是使用上三角级数才真的可行。使用三角级数就是为了放大数据,因为三角级数图形类似于声波。基本的上色相当于绘制一幅立体的俯视图。(z轴退化为一个点)。上面的图片如果进行局部放大,其精细的结够依然在。
所有的这一切都是代数法的结果。为什么要震荡?因为同一个等势线上sqrt(xn^2+yn^2)=不变,上色就没有渐变,正是引入了震荡因子导致了不变的势的变化,从而产生渐变,最后出现有立体感的管状体。

附件: 震荡描述分形的外部.gsp (2012-11-3 00:36, 129.8 KB) / 下载次数 1571
http://inrm3d.cn/attachment.php?aid=18835&k=506c30577562f1e2567f4de0da3e7c57&t=1714666610&sid=T0Qm8O
作者: myzam    时间: 2012-11-3 12:47







选择参数,把级数h(x)的图形拉到基本垂直于x轴,其值就基本在0,1间跳动,从而产生黑白图。
调整参数可以变成彩图。这里y的运动速度是0.2,扫描线数是1000.其实作为练习没必要去这么高的参数。如果把亮度取的更大,就可以进一步的约去细节,得到边界图。着色只要大胆的用各种距离函数去上色就会得到结果。这里的距离主要是是只初象距离,边界距离(边界的范围可以自己认为指定)和象距离(Julia集合中函数|f^n(z)|的势),非分形中,一般的的轨迹上色就是函数|f(z)|的势。
这个图没有加入震荡,所以J集合的外部是平凡的,因为等势。

附件: Julia 三角级数上色.gsp (2012-11-3 12:47, 129.54 KB) / 下载次数 1541
http://inrm3d.cn/attachment.php?aid=18840&k=3d6738b000db55ddf5ee1ece055b8284&t=1714666610&sid=T0Qm8O
作者: xiaongxp    时间: 2012-11-3 13:25

12# myzam
我还是没理解赵老师的震荡。但如果着色只是关联距离em的话,那么et环带(即等势环带)的颜色会因循环出现而单调,因为距离em的值在不同的et环带上是周期出现的。用et值的增加,可以实现色彩由分形外部向边界的平滑过渡或增加相邻et环带的色差实现夸张着色效果。et作为一个基本而重要的逃逸参数,建议引入之。
作者: myzam    时间: 2012-11-3 13:40

13# xiaongxp
你说的这点,很对,同一个等势线上的势不变,用它上色就会再分形的外部同一个环的颜色完全一样,没有渐变。所以我就想了其它的办法让它渐变。
作者: xiaongxp    时间: 2012-11-3 13:54

14# myzam
等势环带是由无数条等势线连续分布而成,同一等势环带有相同的et值,所以等势环带也称et 环带,它就是逃逸时间算法分形图中的那些带状环。等势线的势em在等势环带内是单调的,在不同的等势环带间又是周期出现的。
作者: myzam    时间: 2012-11-3 17:44

15# xiaongxp
我只观察到代数法算出的像距离dist=sqrt(xn^2+yn^2)=常量(就是说点z,在每一个环内运动时,dist不变,而且这点从反函数法上很容易想通。对dist的周期性变化,可以观察到,但是没从理论上想好,因为我做全屏时是把逃逸区域外的点变换到原点开始新的迭代,因此代数法要证明dist的周期性的关键就是要使说明以c1,c2为初值迭代,这种情况下dist的周期性,尽管,从zn的轨道上我观察到了周期性,但这不能代表普遍性。所以这个周期性的变化,我还没得在理论上想明白。),另外,我不想重新引入et,我就是想尝试不用et,能不能用其它的办法解决J集合的内部和外部的对接问题。思路有了一些,也许能行。因为如果我再引入et,就会增加迭代量。如果我回避et就减少了迭代量。
作者: myzam    时间: 2012-11-3 21:18

震荡这个分形从我发现到现在,我已经完整的掌握了J集合外部的等势圈生成环的方法了,用震荡可以使J集合外部平凡的等势圈变成渐渐过度。有时间我把我它些出来供分享。我用震荡控制J集合的外部,用距离控制J集合的内部。想在J集合外部加环(含圆盘),加入几个环,圆环,方形环,带型或其它形状,已经可以认为的控制操作了。震荡可以实现J集合内部和外部的过度。












这些图片说明了J集合就是边界那一点,内部不是J集合,所以内部和外部给了我们发挥的空间。也许你的J集合内部和我的J集合的内部不同,这太正常了,因为J集合的内部它不是J集合,每个人都可以按自己的想象去发挥它。就像J集合的外部不是J集合一样。
这些环是受数学方程控制的,所以控制了方程就可以控制环。这很数学化。环是震荡生成的,控制震荡域就控制了震荡的传播范围。震荡可以让震荡域变白。图片中白色的部分不是挖空的是白色。

附件: 实验文件.gsp (2012-11-3 22:29, 105.07 KB) / 下载次数 1656
http://inrm3d.cn/attachment.php?aid=18847&k=9544b1bd3b8342b03a0f69b27afe6729&t=1714666610&sid=T0Qm8O
作者: myzam    时间: 2012-11-4 18:19

代数法去掉J集合第一个等势圈的方法:
0/sgn(sgn(2-sqrt(x^2+y^2)+1);
这里x,y是初值的坐标。逃逸半径为2.
去掉第二个等势圈的方法:
0/sgn(sgn(2-sqrt(x1^2+y1^2)+1);
这里x1,y1是迭代一次的坐标。
逃逸半径为2.
如果用就第二个同时去掉第 1,2两个等式圈。
设初值为x0,y0
第一次迭代的象为x1,y1.
计算距离dist1=sqrt(x1^2+y1^2)
计算终点象距离dist=sqrt(xn^2+yn^2)
再计算比值:dr=dist/dist1,这个比值是一个连续变量。而且dr≠0
而距离dist是一个跳跃的变量。用连续的变量dr着色可以让等势圈渐变。
方法如下:
R=r*|sin(π/T*dr)|;
G=g*|sin(π/T*dr)|;
B=b*|sin(π/T*dr)|.
r,g,b是三原色的混合比。调整比值就可以着不不同渐变颜色。T为周期,由于有绝对值,计算周期时不是2pai/T,而是π/T。
另:变量dist/sqrt(x^2+y^2)也是一个连续的变量,这个变量的分母可以是0,从而会产生震荡,生成各种特效环。
最后,如果不考虑J集合的外部着色,直接用dist着色就不错了。
如果要进一步的着色,使环变化更丰富,可以把用三角级数的前三项着色。震荡绘制J集合中在嵌套一个分形。
如果引入分段函数,可以控制震荡的范围在特定的园外。
方法是:
r=0.5(震荡半径)
dist0=r-sqrt(x)^2+y0^2)(震荡域,如果把这个方程修改,就可以够造出非圆环的环,这个方程控制了震荡的形状,可以叫震荡方程)
boolean0=sgn(sgn(dist0)+1)(判断震荡,园内值=1,园外值=0)
osc=dist*boolean0)+dist/dist0*(1-boolean0)
用osc(oscillation)带人上面的R,G,B着色就可以把震荡控制在半径为r的园外。
去环的方法的实例文件在21楼。
作者: myzam    时间: 2012-11-4 19:00

13# xiaongxp
我引入了et,但是用起来好像没特别的效果。而且我在代数法中引入的et和几何法中的不一样,
我看你们在几何法中的et迭代到一定的时候就不动了,但是我在代数法中引入的et,迭代时没上界。
因为在代数法中全屏迭代是这样的的:
点P,进行迭代,如果迭代象第一次超过半径为2的逃逸域,这个点就被相似变换x'=boolean*x,y'=boolean*y变换到原点(因为原点正好是这个相似变换的不动点,代数法中必须要找一个不动点作为变换的中心。当然可以选其他的不动点作为变换的中心),然后从原点开始迭代,这时(0,0)的象就是(c1,c2)(f=z^2+c,c=c1+c2*i).(c1,c2)开始迭代后,我发现其象几乎都没有在超过逃逸域了,这就导致计算出来的et不断的递增,几乎总是和迭代次数相等,这一点和几何法不同,这样et就失去了几何法中的那种特殊的功能。但同时也节省了大量的重复迭代,因此我猜测代数法的运算速度回超过几何法。我没验证过。只是分析。
作者: xiaongxp    时间: 2012-11-4 20:29

   逃逸时间算法,就是对像素点用其迭代路径的终止时刻et和位置量em定义颜色的计算机绘图方法,而终止条件就是何时逸出阈。如果只用x'=boolean*x,y'=boolean*y参与迭代,终止迭代的时刻只能是最大迭代次数。这种方法固然解决了满屏扫描,但不是逃逸法。逃逸时间算法是计算机图形学的基于迭代的作图方法,分形学只是借用之。如果不引入逃逸时间,按赵老师文件中的设计方法,我想每一条环带的色彩将会是简单的重复,因为你设计的迭代路径可以理解为几乎均以原点为起点。
      可能你只研究了我们早期的源文件,那都是几何法作的。现在我们基本放弃了这种方法,改而用代数法了,建议看看最近一二年的源文件。
      另外,赵老师的扫描线不用线段而用参数作颜色变换不知有何好处?这种作法必然使像素点跟着扫描线移动,从而使大量数据运算处于前台,而我们的像素点是静止的,像素点参与的运算是后台的,扫描速度会快一些。
作者: myzam    时间: 2012-11-4 20:37

代数法中M集合去掉外部环的方法:
首先得说清楚代数法的迭代过程:
1.(x,y)经相似变换x'=boolean*x,y'=boolean*y得点x0,y0
2.x1=x0^2-y0^2+c1,y1=2x0*y0+c2
这是第1次迭代记判断值为boolean1.但一个点的迭代象超出逃逸圆时,这个点马上被变换到了原点
(0,0)。然后从原点开始新的迭代,所以运算速度是比较快的。
3.但对于M集合比较特殊,因为M集合的起始点是(0,0),所以还要计算2个判断值
boolean1=sgn(sgn(2-sqrt(x1^2+y1^2)+1),
boolean2=sgn(sgn(2-sqrt(x^2+y^2)+1).
最后在着色时加入0/boolean1,0/boolean2(加入这个可以同时去掉两环,当然要把原来的轨迹删除了,从新构建轨迹相当于电脑里面的刷新),就可以去掉外部的两个环。

注意:1.J集合外部的两个环只要用0/boolean,0/boolean1就可以去掉,这是和M集合的细微的差别。

2.boolean是布尔代数创始人名字,表示逻辑判断。它的值就是两个0和1.
几何法中的这个逻辑变量是p=(1+sgn(2-sqrt(x^2+y^2)))/2,这种写法有个缺点就是点在边界上时p=0.5.所以p值不是逻辑值,当然这种写法不影响运算。
3.最开始我一直想在代数法中引入et,但我选择了放弃在代数法中引入et。我虽然不太明白et的妙用,但是我觉得,至少说我没有感到代数法的使用上,我必须要用et。而且在代数法上引入类似几何法的et是比较困难的。而逻辑变量到是一个很好用的量。
这里的逻辑变量boolean都是按如下法定义的:a≥0时,boolean=1,a<0时,boolean=0,定义方法如下:boolean=sgn(sgn(a)+1),当然也可以用我的逻辑工具包里的逻辑工具直接求算。
4.为了去掉最外面的环,我真走了弯路,就是老想用用几何法的逃逸时间,要是一开始我就直接用逻辑变量去作,这个去掉外环就很简单了。人有时就是一根筋。呵呵。
  分形就是穷折腾,没有外环想外环,有了外环去外环。外环都去玩了那还要全屏干吗?答曰:俺们就喜欢折腾,折腾好了就毕业了。
距离作图二:


d
(这个图去掉了等势线,原理方程x^2+y^2=r决定色的走势,改变它!)


点(x,y)的走势决定色的走势,环状的色意味着点走圈装,如果把点的走势更改为双曲走势,线性走势色的走势也差不多是那种走势。
环是有基本方程x^2+y^2=r^2导致的,改变它,必可以改变色的走势。这一点给了我们玩分形自由发挥的空间。
千变万化等式线上色是基本功。
等势线上色可以统称为距离上色---D法(distance)。在用分形的图探讨问题时没必要把精力花在把图做精致上面去,最关键的是图能说明原理,图是不是验证了自己的想法。不断的验证自己的想法就会进步。
为了避免混乱代数法记号约定:距离:用dist(distance)表示。
点的坐标用:xn,yn表示,n=迭代次数
点用:A,An,C,b,bn表示。
距离比用:dr(distance ratio)表示
单参数着色:用H表示着色参数
三参数着色:用R,G,B,或H,S,V表是参数,用r,g,h表示颜色的混合比,或用h,s,v表示H,S,V的比值。
逃逸时间:esct(escope time)
fractal-tool工具包:主要是三个工具一个是逃逸时间计算工具esct,一个是反点计算工具invers point。还有就快速显示不同的c对应的J集合的工具(迭代次数控制到6以下,这时有点4(2^6+1)=260个点),避免盲目乱输参数。

附件: 实例文件.gsp (2012-11-4 22:09, 87.73 KB) / 下载次数 1391
http://inrm3d.cn/attachment.php?aid=18858&k=dc0f66d4adb3db1a7d9a776c240bab3c&t=1714666610&sid=T0Qm8O

附件: [主要是逃逸时间计算工具] 7b-fractal tool.gsp (2012-11-7 23:19, 56.03 KB) / 下载次数 1351
http://inrm3d.cn/attachment.php?aid=18859&k=161e47ce0aab0ebf67dc9e4a05d190fc&t=1714666610&sid=T0Qm8O
作者: myzam    时间: 2012-11-4 22:42

20# xiaongxp
1.用参数控制色彩,和你们用线段控制色彩那个快,我还真的不知道。我只是想既然几何画板提供的就是参数控制色彩,所以我就想尽量用系统的东西,我想尽量的用系统的东西会减少运算量,会提供运算速度。我迭代到2000次,放大到100万,我的单核机子还可以走。我想代数法是比叫快的。
我用参数控制一切主要是为了书写变换方便,而且写完了运算分形的扫描全都具备了,不用另外添加东西,我控制色彩都用参数其实是用原象的,是便于把一切加到原象上,而象我可以很方便的放进行处理。相当于原象是核,我只要控制好核,就可以了。用参数控制色彩主要是构思自然不需要特别的训练,源文件容易转手给别人,别人容易看懂。你最有发言权几何代数两法你都会。如果从普及分形的角度看,我就要大力推荐初学则学习代数法。因为这种方法便于交流。传统的方法有许多优点,但缺点也不不少,起码拿着源文件很短的时间内初学者是整不懂文件的的。
2.真不好意思,你们的源文件我没有完全搞懂一个或者说我几乎看不懂,主要是我对你们的用的框架一无所知,如果不是你耐心的给我解释et是什么,到现在我也不清楚你们的et是什么意思,逃逸时间我知道,但是就是过去一直没懂你们的et是什么,到是看到了xue的全屏的文字意思,我就直接做了,做时也没多想。一次就成功了。取环上受et的影响反而走了弯路,后来我放弃了算et,直接用逻辑判断,去环就直接成功了。
3.我的算法是逃逸时间算法。只是我没有et的计算公式。因为求出的是et的最后值,对我没多大用处。
4.我用变换把跑到逃逸域外的点拉回到原点,这和拉到其他的地方无本质的差别。
5.上色问题我的处理思想是:因为势可以理解为阶梯性跳跃的函数(指J集合,当然在在M集合中势关于C是连续的,所以处理M集合的上色要比处理J集合的上色约为简单些),我就是要想办法让势连续变化,不要跳跃,这样就可以让色彩连续变换,以就是你说的平滑过渡。所以我就用势/初相距离,或用势力/第一次迭代象的距离,这两个变量都是连续变量,用它们上色就可以实现色彩的过渡。
6.你们的et用来上色我听你说,我理解的意思就是把势连续化,从而实现你说的平滑过渡。要实现平滑过渡不一定要用et。
7.由于绘制J,M集合,我们关注的是它们的收敛点的图,如果迭代的点列是z1,z2,。。。,zn,。。。,如果这个序列有收敛的子列,那么这个子列的后像距离与其前项距离的比几乎是压缩的,即z[n]/z[n+k]=a<1.而这个量是连续的,值∈[0,1],这特别好,只要把颜色面板的色宽设置成【0,1】就可以方便上色了。特别地可以把后像距离与前项距离的比用z[n],/1,或z[n]/z1,或z[n]/z2,z[n]/z0代替。实验的结果是效果还是不错的,而且运算速度也不错。而且这种方法可以把内部和外部较好的对接起来,原理也不复杂。还有一点:分形的IFS定义我看到是这么说的的:一组压缩映射的吸引子通常就是分形。这说明距离之比几乎小于1有着理论支持。
8.你所的像素上色法,我真的不知道是怎么回事,你能说详细点吗?我对分形就是瞎琢磨,如果都弄明白了分形我就不玩了,因为那时分形就不好玩了。呵呵。老巷的东西多。我想听听你们的上色法,我真的无法看懂你们的文件,主要是框架恰注我的,我基本不知道你们的框架那么是干什么用的。
作者: myzam    时间: 2012-11-5 00:25

关于代数法的逃逸时间(escope time)如何创建~逃逸时间可以是负数:
假设迭代次数是n=100,这第一环对应的esct=-100,第二环对应的esct=-99.
而相似变换的比boolean=0时,对应最外面的圆之外的部分。
代数法中使用逃逸时间还不如直接使用判断值方便。计算出前两次迭代的判断值就可以了,这样既方便,也大量的减少了迭代次数。
到此代数法已经可以很好的完成分形绘制了,剩下的就是丰富算法了。基本的算法在上面已经贴出来了。对于分形的入门足够的多了。
上面的碧云山庄图,就是用0/(esct+100)+0/(esct+99)去掉外环的。逃逸时间为负值,完全出乎我的意料之外。不过想想也合理,
因为代数法是点到达边界后被拉到了原点,从此这个点再也逃不出去了。迭代次数为100次,这个点就在区域内迭代100次,从不会跑到区域外面去。所以逃逸时间只能是用负数表示。真是没想到代数法逃逸到边界的时间居然可以是负数,合理,这合理。
逃逸时间请用上21楼的7b-fractal tool包中的工具完成,当然也可以直接求算。一般不要提前算,要用时才算,以减少运算量。
最后感谢老巷老师一再建议和介绍逃逸时间,所以才最终在代数法中推算完成了逃逸时间临界值的计算。
此外代数法的逃逸时间有如下四个取值:
假设迭代次数n=100,那么逃逸时间esct=-100,-99,0,1.
到处几何法的参数代数法都全有了。几何法能做的事情代数法都可以完成了。
付:逃逸时间计算公式:t=0-->t+1(n=迭代次数),完成迭代后取代如下:t被boolean1取代,
1被boolean2-1取代。或者说迭代关系是为boolean1,boolean1+boolean2-1,。。。.
值对应0,0对应-1,-2,-2,。。。
      1,1对应1,1,1,。。。。
      1,0对应0,-1,-2,-3,。。。。
      0,1对应0,0,0,0.。。。
也就是说用迭代次数n+esct=0,1,...习惯,这个值就对应一环,二环。
============下面是正逃逸时间推导====现已经把逃逸时间改为了正数==============================
由于几何法已经习惯使用正逃逸时间et为了配合几何法的et,现在把代数法的逃逸时间esct更改为正逃逸时间:
构造方法:t1--->t1+1(n为迭代次数,就是J,M集合使用的迭代次数),完成迭代后进行如下取代:
t1---用boolean1取代,1---用boolean2.即可。
逃逸时间用esct(escope time)表示。由于初始值分别为(0,0),(1,1),(0,1),(1,0)所以逃逸时间分别对应四大类。
其中esct=0对应1环,esct=1对应二环,这样就和几何法的逃逸时间一样了。但是有一点不同,几何法的逃逸时间最大值通常比迭代次数n小的多。
但代数法的逃逸时间最大值可以是:n+1,最小值可以是0.原因是代数法的逃逸时间可以是无界的量。
工具在21楼的fractal tool包中。负逃逸时间也被我删除。取调一环,二环其实直接用逻辑变量boolean1,boolean2就可以了。代数法的逻辑变量要注意前三个,它们分别对应最外面的三个区域。
最后再次感谢老巷提供逃逸时间的概念。
小结:
1.到此代数的构架全部完成。利用代数法可以进入分形的天地了。
2.几个重要的概念:
逃逸时间esct,逃逸域(通常是圆,可以变为其它的如带型),各种距离dist,距离之比dr,震荡变量osc,震荡域,震荡半径,极限点,周期圈。
逻辑判断boolean(如果你不像每次都求算,可以用7b-logic tool中的布尔值求算工具完成)。
反点inv。∞,undefined,
象距离dist,初象距离dist0,边界距离esc,势的概念,势的跳跃性和势转换为连续变量,等势线(equipotential line,一般等势线为contour line---CT)
从另一个角度sqrt(x^2+y^2)=r就是上色时点(x,y)的轨道方程,它决定了色的走势,是圈状还是线性,多大的圈,圈的范围在哪里。更改方程当然会出现不同的效果。
还有就是简单的着色知识三原色,复色,间色,饱和度,明度,色相。冷热色调,补色的概念,关于色的概念大致了解一点就可以了。主值区间,色宽,常色区间。有的名字是我创建的合不合理不要紧,有个名字便于交流。各种距离上色(D法)
3.R,G,B(或H,S,V)的构造:
R=rF,G=gF,B=bF,F关联到象点的距离,这样r,g,b之比就可以调试色彩,这只是基本结构,可以变化,不过这个模式是很好控制色彩的,如果曾经画过画的人,一看就明白道理。
F常用三角函数,或三角级数,负幂级数,trunc函数(周期性跳跃),x/T-trunc(x/T)值域为0~1间变化的一个周期函数。对F的平移,对F的伸缩都是常用技巧。常常绘制出F的函数图象配合色宽控制上色。上色时有时还要大致估计有没有极限点(就是f^n(z)的不动点),极限点常用来测试距离,并可以完成对极限点的强调突出。在J,M集合的外部加环,并设置环的大小数量,位置这是osc震荡完成的。
学习分形就从最基本的距离函数按上面的模式上色入手。
基本配色公式:R:G:B=1:0:0=红,R:G:B=1:1:0=绿色,了解点这种知识是上色必须的,我的这部分知识是我读书时学美术学的。我从小学到大二一直在学美术。
我的体会
学习分形开始千万要回避那些复杂的分形,入门越简单的例子越好,最好就是一个例子反复练,从不同角度练。分形的参数有x,y,c1,c2,dist,osc ,esct,dr,R,G,B就用一个例子把这些参数一个一个的变化,当你把每一个参数的变化都体会完了,分形就入门了。更好的方法是先抛开分形,做一个直接进行扫描上色练习,然后在进入分形,这样学习效率更高。
学习分形要入门1小时的课时足够了。要做到熟练学什么都有一个过程。我把这些写出来是为了让后来的学习者能直接进入分形,不要去走弯路,在初学时把无谓的精力花在做复杂的花哨图形上去,偏离了本质问题的学习。分形上色的原理不复杂,创造靠你自己。如果不想深入的研究分形,对大多数人来说,D法足够了。此外不要迷信esct的作用,它不是万能的。
遗留问题:现在我的上色停留在空间坐标系的z轴退化成一点的情况下上的色,这个空间坐标系装在我的心里,是一个虚拟的坐标系。现在想探讨一下虚拟的空间坐标系的z轴不退化成一个点时如何上色?
回顾:
我为什么用代数法?记得几年前,我在中国画板网就发过M集合的扫描,那就是我的第一个分形,后来我再也没玩过分形了,后来我发现几何法创建框架就麻烦,偶然我就试试代数法,发现代数法直接就可以扫描,而且不用多构思什么,就按自然的想法就完成了扫描,所以我觉得代数法扫描没有“技术”含量,每一个人看一眼就会。后来我就拿着试试,居然成功了,刚开始我使用的是H,S,V上色,因为H,S,V的含义能比较容易的和距离挂钩。当H,S,V成功后就推广到R,G,B.整个探索的过程体现了特殊到一般的思想。探索比知道结果更有乐趣,玩几何画板我理解就是打麻将,都是玩。
作者: xiaongxp    时间: 2012-11-5 18:29

20# xiaongxp
你所的像素上色法,我真的不知道是怎么回事,你能说详细点吗?……我基本不知道你们的框架那么是干什么用的。
myzam 发表于 2012-11-4 22:42
计算机绘图的过程,就是对屏幕特定区域的每一像素点定义颜色的过程。扫描框架就是为屏幕划定这个绘图区域。我们先在屏幕的任意位置作一独立点,它的坐标占据一个像素,将终点z[et]的色相定义在上面,它便是一个迭代路径的起点z[0]。将此色相变换到扫描线上,扫描线上的每一个像素点都是相应迭代路径的起点,如果其采样数是500,它便对应500条迭代路径。随扫描线的跟踪移动,就将扫描框内所有像素点用相应终点色相赋以了斑斓的色彩,从而形成美丽的分形图形。
作者: myzam    时间: 2012-11-5 18:51

24# xiaongxp


哦,明白你的意思了。变换是种思路。这个我还是比较熟悉的。但是那种方法更快,要做了实验才知道了。
作者: myzam    时间: 2012-11-5 19:04     标题: 一个思考

用势上色,为了使色彩渐变,就要把势连续化,上面的求的的esct是跳跃的,如果在推导esct时,
加入连续的因子,得到新的esct,把新的esct再和象距离配合,就可以把势改造成连续的变量,这样的思路去上色会怎么样?
作者: myzam    时间: 2012-11-5 23:00

逃逸时间变量esct的临界值
假如迭代次数n=100,此时esct的最大值=n+1=101.
这个临界值是使用方法是:
0*sqrt(esct-101)与0*sqrt(101-esct),这样使用可以挖去环。
另两个值的使用方法是:0/esct,0/(esct-1).
把它们加到R,G,B的一个参数中就可以挖去环。
101临界值也能这么使用:0/(esct-101).
对于101临界值还可以采用对数挖环:象这样0*ln(esc-100)等等。
作者: myzam    时间: 2012-11-6 23:30

关于逃逸时间的再说明
1.看看esct的推导过程
t1=1,t2=t1+1,J集合的迭代次数是n,迭代关系为t1-->t2=t1+1,
迭代完后t1用boolean1取代,1用boolean2取代。
这里的boolean1是J集合的第一次迭代象的逻辑判断值,boolean2是J集合的第2次逻辑判断值,它们的作用就是判断点(x1,y1),(x2,y2)是否跑出逃逸区域。
计算公式为boolean_i=sgn(sgn(2-sqrt(x_i^2+y_i^2)+1)) (i=1,2,3,...).
所以当J集合的(M集合也一样)的n=1时,esct也被迭代了2次,当n=2时,esct被迭代3次算出来。
所以当n=100时,esct的最大值就会出现为101,这就是esct的最大值是n+1的原因。
结论:当J集合的迭代次数是n时,逃逸时间esct是通过n+1次迭代算出来的。
由于boolean1,boolean2的值由四种可能0,0;1,1;1,0;0,1,
从而esct的值有四类。其典型值为esct=0,1,n+1.这是它的三个最典型的值。
相似变换的判断值boolean=0对应最外的区域,esct=0或boolean1=0对应1环,esct=1或boolean2=0
对应2环。
2.点列{An}的周期性说明
猜想:设f(z)=z^2+c,c=c1+c2*i,构造序列{zn},其中z0=x0+y0*i,z[n]=z[n_1]^2+c,
当c固定时,序列{z[n]}为一周期数列。(全屏迭代时)
例如:c=-0.73-0.3i时,序列{zn}的周期T=14.
由这个猜想出发可以看到逃逸时间esct可以改造成关于n的周期的函数,这个周期性未证明,只是一个实验结果。如果能证明那是非常漂亮的一个结论。能给出周期的计算公式那就更好了。这个周期性猜想可以简单的记成:z[n,c]=z[n+T,c],或者说成:
猜想:代数法全屏迭代时,象点的轨道关于迭代次数是周期性轨道。
如果初始点确定为原点,跌代若干次后这个点跑到了逃逸域的外面,就会被再拉回到原点,开始新的周期性迭代,从而点zn的轨道具有周期性,但是其他情况如何证明?不知道就了。
这个猜想是重要的它关系到确定最后的临界逃逸点是谁。
作者: changxde    时间: 2012-11-7 08:24

这里简单的讨论了一些点的周期18#  
作者: myzam    时间: 2012-11-7 08:59

29# changxde
那些文章很好。谢谢。
把微分离散化称为差分,是计算数学的基本技巧。差分法(deference method~DM)解决的是计算问题,即微商的离散化,解决不了周期性问题。
作者: myzam    时间: 2012-11-7 10:08

关于Taylor展开式
用sinx上色和用多项式上色一样的
因为sinx=x+x^3/3!+x^5/5!+...
其余类似。。。。
由于每一个分段函数都可以展成Fourier级数,所以用分段函数上色和用三角级数上色基本相当。


用前后项距离的差作为dr输入,就是这样:|sin(πdr/T)|着色,边界就会高亮成灯光效果。
作者: myzam    时间: 2012-11-7 22:08


方法不理想,精度不够高。
作者: myzam    时间: 2012-11-8 11:04

31#边界高亮的理论依据~是必然还是偶然?~···前差分的应用:

设J集合迭代序列为zn,这个序列相邻两项为z[n],z[n+1],这两项构成的前差分为
Δz[n]=z[n+1]-z[n],这些点都在等势线上。
由于z[n+1]=f(z[n]),z[n]=f(z[n-1])
所以,Δz[n]=z[n+1]-z[n]=f(z[n])-f(z[n-1])
由微分中值定理,得
Δz[n]=z[n+1]-z[n]=f(z[n])-f(z[n-1])≈f'(t)(z[n]-z[n-1])
其中f‘(z)=2z,t=(1-a)*z[n-1]+a*z[n](0≤ a≤ 1 )。
故 Δz[n]=z[n+1]-z[n]=f(z[n])-f(z[n-1])
    ≈f'(t)(z[n]-z[n-1])
    =[(1-a)*z[n-1]+a*z[n] ]*(z[n]-z[n-1])
所以
   |Δz[n] |=|z[n+1]-z[n] |    ≈   | (1-a)*z[n-1]+a*z[n] |*|z[n]-z[n-1]|。
|Δz[n] |这个前差分的绝对值,实际就是势差。由于解析函数在有界闭集上的最大模
总是可以再边界上达到,因此这个势差将在边界上取得最大模。故以它作为
dr  =| (1-a)*z[n-1]+a*z[n] |*|z[n]-z[n-1]| (0≤ a≤ 1 )。
上色,边界必然会高亮。





双点迭代,想法折冲降低内成内存,这还是可以办到的。这些都是解析函数最大模定理作用的结果。
扫描图片我没多少耐心,意思意思就行了,扫描非常快,十来秒钟完成的,扫描了一遍。跌嗲了100次,采样率500.
参数运动速度0.5/sec
作者: myzam    时间: 2012-11-9 13:00

高亮(high light~HL)技术绘制等势线(contour line~~CT等势线):
改天我把它写出来基本原理利用微分中值定理,展开势差。
技术是用来分享的,死了带不进棺材,玩几何画板和打麻将没什么差别。我把我的心得写出来供板友玩耍。
------------------------------------------------
我把原理,做法补在37#,供板友玩耍时参考。

附件: 高亮技术绘制等势线.gsp (2012-11-9 13:21, 96.51 KB) / 下载次数 1560
http://inrm3d.cn/attachment.php?aid=18873&k=553b7981ff8ba50915fef651d8cc9090&t=1714666610&sid=T0Qm8O
作者: xiaongxp    时间: 2012-11-9 13:47

34# myzam
这种处理等势线的方法很独特,学习了。
作者: myzam    时间: 2012-11-9 13:53

35# xiaongxp
我也是看了你们的等势线画法效果图,我就被逼做的,原理很简单,注意是改造来要让画板能运行,这个我费了点力。
作者: myzam    时间: 2012-11-9 18:33

一。原理篇
为了让板友能够更好的理解我的想法,我就从最基本的数学概念说起,本来这是多余的。
1.分段函数有简单函数的概念
  分段函数大家都比较熟悉。
例子:当x>1 时,f(x)=x^2;当x<2时,f(x)=x-1 .这种函数就是分段函数。
  简单函数是实变函数里面广泛使用的一类函数,它是类似于分段函数的一种函数。
例子:设E是一个区域,E1,E2,E3是对区域E的一个划分,这个划分满足条件:E1,E2,E3两两不交,且其并集等于E。定义函数f(x)(这里的自变量x,可以数轴上的点,也可以是平面上的坐标,乃至高维空间中的点的坐标),规定如下:当x∈E1时,f(x)=a1,当x∈E2时,f(x)=a2,当x∈E3时,
f(x)=a3.(a1,a2,a3为常量),这样定义的f(x)就是简单函数,所以简单函数更像我们平时见到的阶梯函数。
2.微分的概念
  设w=f(z)是一复变函数,定义Δz=z-z0叫自变量的增量,类似的定义Δw=f(z)-f(z0)叫函数的增量,函数的增量也可以写成Δw=f(z+Δz)-f(z)。我们把比值Δw/Δz叫做差商。
当Δz→0时,Δw/Δz→α,把这个极限值叫做函数w在点z0处的导数,记成f'(z0).
同时我们要把Δw,Δz在叫做函数的微分,和自变量的微分,习惯记成dw,dz。
3.解析函数的概念
设w=f(z0),如果函数w在z0出有导数,就数函数在z0出可导,如果是实函数,在某点处可导和在某点附近可导是一样的,但是复变函数不是这样的的,一个复变函数在点z0出可导,但是在z0的附近的小小的圆邻域内不一定可导(这只要有复变函数的柯西条件Chauchy就很容易举出反例来,本处勉)。
所以复变函数给出了:在z0附近可导的函数叫解析函数。如果f(z)=z^m+c就是解析函数。复变函数主要就是研究解析函数的性质。
4.微分中值定理
微分中值定理是Taylor展开式的特例。复的函数和实的函数都是一样的结够。其实复变函数研究的展开式主要是罗朗展示,它是正幂级数和负幂级数合在一起的一个种级数,复变函数的极点,留数的计算就要靠罗朗展示,这几句话说远了,还是回到正题来。
微分中值定理:设w=f(z)在点z0出解析(即在z0为中心的圆邻域D上处处可导),则
f(z)-f(z0)=f'(u)(z-z0),其中u是位于z和z0连线上的一个复数。u也常常写成u=z0+t*Δz
(0≤t≤1),或写成u=t*z0+(1-t)*z.
微分中值定理的应用:每一个解析函数w=f(z)都可以在以z0为中心的圆邻域D内展开:f(z)=f(z0)+f'(z0)Δz+o(|Δz|).
记号o(|Δz|)表示比|Δz|高阶的无穷小量,就是当Δz→0时,o(|Δz|)→0.这说明档|Δz|很小时,
可以有f(z)≈f(z0)+f'(z0)Δz。
把微分离散化就是差分,这里从约,因为我发现直接用中值定理就可以导出我想要的结论来。
作者: myzam    时间: 2012-11-9 19:00

5。Julia集合中的势的概念
   首先,谈复函数的等势线(ct线~contour line)的概念:如果w=f(z)为一复函数,
令|w|=r,这时点z的轨迹就叫函数w的ct线。其实复变函数的ct线,就是它对应的实函数|f(z)|的ct
线,此时的值r叫做势(势值potential),显然在同一条等式线上势是相等的,这叫等势值(euipotential这点几何法叫做et)。
   其次,谈谈Julia集合的中的等式线的概念:
  设f(z)=z^2+c,c=c1+c2*i,迭代:z0=f^0(z0)(这是为了方便做的一个记号规定),
  z1=f(z0),z2=f(z1)=f(f(z0))=f^2(z0),z3=f(f(z2))=f^3(z0),...,z[n+1]=f^n(z0)
   通过迭代得到一个复序列{zn}.
   显然递推关系是:z[n+1]=f(z[n])=f^(n+1)(z0)
   当点zn位于半径为2的园内时,我们认为初始点z0∈J集合。如果经n次迭代后点zn跑到了半径为2
  外,我们就认为初始点z0∉J集合。我们要做的就是对zn没有跑出半径为2的圆时,对它所对应的初始点z0着色。
  概念:zn=f^n(z0)它是以z0为自变量的一个函数,称实函数|f^n(z0)|的ct线就Julia集合的等势线。相应的势值显然就是zn的模,即|zn|=sqrt(xn^2+yn^2).
  如果绘制J集合就会发现J集合的等式线会划分出许多类似于圆环的图形,在每一个类似圆环的形状内,势|zn|保持不变,但初始点从一个类圆环跨到下一个类圆环上时,势|zn|跳跃成另一个值。
假设绘制J集合时类圆环就3个(其实远远不只这么几个,这里是假设),不妨设这三个类圆环为E1,
E2,E3.则势|zn|就够成了一个如下的简单函数:
当z0∈E1时,|zn|=r1,当z0∈E2时,|zn|=r2,当z0∈E3时,|zn|=r3.
真实的情况是这个简单函数原比这个假如复杂的多,阶数也要多的多。总之势构成了一个函数:
|zn|=φ(z)它不是我们理解的阶梯函数,它是一个数学上是简单函数(数学专用概念)。正是势是一个简单函数,所以直接用势着色,J集合就会出现一个个类似圆环是色块,我们叫它们为等势圈,因为在每一个圈内势不变。那么有什么办法作出等势线呢?
特别注意:数列zn叫函数列,它带有参数z。
作者: myzam    时间: 2012-11-9 19:59

6.势差的概念
概念定义:设复函数w=f(z)的等式线为ct1,ct2,它们对应的势分别为r1,r2,称|r1-r2|为势差。
(potential derference).
把这个概念应用到J集合的迭代上:关于J集合的势差的计算有多个角度计算,比如计算前后两项的势差,|z[n]- z[n+1]|就是比较常见的一种(其实是势差的近似算法,下类似)。不过这里要介绍的是另外一种计算J集合势差的办法:首先取两个点z,z‘ 作为迭代的初始点,z出发迭代n次的终点为zn,z‘出发迭代m次的终点为zm’
终点的势差为|zn-zm'|,特别注意这个势差是函数列,或明显的写成:|zn-zm'|=φ(n,m,z,z'),它有4个变量。通常可以取n=m,即两个初始点的迭代次数相同。
那么这个势差函数有什么性质呢?
以下我们假定n=m,并且z和z'充分接近,即认为|z-z'|接近于0.由于f^n(z)为一解析函数,当然是连续函数,又由于我们是在一个闭合的圆盘内讨论,圆盘是一个有界的闭集和,关于闭集上的连续函数有着样一个重要的定理:闭集上的连续和一致连续等价.
什么是一致连续:就是说z和z'是两个动点,当z和z'充分接近时,对应的函数值也充分接近。
连续的概念要弱一点:连续的定义要求z和z‘中必须有一个是固定的点。一致连续是函数的整体性质,连续是局部性质。
正是由于f^n(z)是一致连续的,所以f^n(z)-f^(n)(z')也是一致连续的,从而势差|f^n(z)-f^(n)(z')|
也是一致连续的。一致连续很重要,它保证了|z-z'|→0时,  |fn(z)-f^(n)(z')|→0.
所以当z和z‘ 充分接近时,点zn和zn’  必然位于同一个J集合的等势环内。这时的势差基本就是0.
当z或者z‘有一个点位于两个相邻的等势环的交界线上时,势差就会变成非0的值,由此可以看到,
势差具有跳跃性,只有在相邻的等势圈的交界上它才非0.势差函数构成了一个类似于简单函数的函数。
由势差的性质决定了用势差上色会高亮(high light相邻的等势圈的交界处。而且上色后对交界进行足部放大一定是色彩不完全一样。尽管我没有去放大过。但是理论告诉是这样的。
作者: myzam    时间: 2012-11-9 20:27

7.Julia集合中一种势差的估计
计算势差站的角度不同,可以计算出各种各样的势差。这里用计算的是上楼提到的势差:
记Δzn=zn’-zn,并假定z和z‘充分接近。
Δz[n+1]=φ(n,z,z‘)=z[n+1]'-z[n+1]=f(zn‘)-f(zn).
因为f(z)是解析的,所以微分中值定理成立,即有
Δz[n+1]=φ(n,z,z‘)=f'(u)(zn’-zn)=f'(u)Δzn(u是zn和zn’连线上的一点)
所以势差函数为:|Δz[n+1]|=|f'(u)|*|zn’-zn|=|f'(u)|*|Δzn|,
u的处理有三种方式:
方式1:u=zn‘+αΔzn(0≤α≤1)
方式2:u≈zn。
为了应用的方便,我选用了方式2.这样就得到了势差函数的估计式::|Δz[n+1]|≈|f'(zn)|*|Δzn|,
这个估计式适合的不仅仅是Julia集合。对一切解析函数都是对的。
但是对于J集合,由于f(z)=z^b+c,故其导数f’(z)=b*z^(b-1),从而势差的估计式为:
|Δz[n+1]|≈b*|zn^(b-1)|*|Δzn|,通常的J集合合中的b=2.
下一步就是要在画板中通过双点迭代实现势差(potential deference~PD)着色。
作者: myzam    时间: 2012-11-9 21:03     标题: 二。实战篇

8.画板中的双点迭代
双点迭代就是从2个初始点开始迭代,但是这两个初始点不能同时迭代,否则画板不堪负重。
我们应该采用分次迭代,迭代完成后采用取代的办法,这样就可以把那些不需要的点抛掉,尽可能的
让不需要的迭代的点不去参加迭代。我前面做了个显示各种J集合的工具,我体会到当迭代的点的总数
到达万级时,速度就很吃力了。所以双点迭代的关键是让不需要迭代的点不要迭代。做法如下:
设f(z)=z^2+c,c=c1+c2*i,迭代的初始点为z ,z‘,
A---以z=x+yi为初始点迭代:
第一步:在坐标平面内描点A(x,y)
第二步,从z开始迭代,迭代次数为n:z,z1,z2,,...,zn.
记迭代终点zn的为An(xn,yn)。
其中对应规则为 x→x^2-y^2+c1,y→2xy+c2
B---以z’=x'+y'*i为初始点迭代,迭代次数为m:
第一步:在坐标平面内描点A'(x',y')
第二步,从z'开始迭代,:z',z1',z2',,...,zm'.
其中对应规则为:x‘→x’^2-y‘^2+c1,y’→2x‘y’+c2。
记迭代终点为An‘(xn’,yn‘)。
这是两次独立的迭代,所以不会有不该迭代的点参加迭代。
接下来就是要进行取代,
我们要求z和z’充分接近,故引入一个参数h=h1+h2*i,|h|为无穷小量。
令z‘=z+h,则x’=x+h1,y‘=y+h2.、
所以,我们在第二次跌代完成后,把x’,y‘按上面的式子取代就可以了。m也可以用n取代。
但是我觉得留下m参数观察n,m取不同的的着色效果是不错的选择。如n-m≠0时会得到另类的J集合图象。
h参数控制了J集合的相邻的两个等势圈的交界线的粗细。如h=0.1,0.01,0.001.0.0001会得到精度
不同的图形。
最后是用势差上色。
记变量dr=|Δz[n+1]|=|z[n+1]'-z[n+1]|≈2|zn|*|Δzn|,其中
2|zn|=2sqrt(xn^2+yn^2);
|Δzn|=sqrt((x'n-xn)^2+(yn'-yn)^2).
记R=r*|sin(π*dr/T)|,G=g*|sin(π*dr/T)|,B=b*|sin(π*dr/T)|.
r:g:b控制色相(就是红的,还是粉色的意思)。
用R,G,B对点A上色,得点A",构建x对点A"的轨迹,选中轨迹按下ctrl+T,就会追踪这个轨迹。
最后运动参数Y,就会扫描出J集合的等势线CT(contour line)。
说明:ct线的粗细由两个因素控制 ,这从理论部分不难看出
1.h参数。2。初象z和z’的接近度,它们的接近度等价于zn和zn‘的接近度(一致连续的原因)
,这又归结到迭代次数n和m的接近度。
3.n-m≠0时,|zn-zm|会出现明显的差距,J集合的图形很另类。或者说将得到一张粗放形的等势线逼近J集合的图。
高亮只是单点迭代,算法与这里类似,ct线要用双点迭代。ct线要求内存比较高。迭代次数不必取的过高,因为,迭代到一定的次数点就稳定了,在迭代下去没多大的意义,只会耗内存。迭代到一定的次数稳定后,就zn的点的轨道可以看到极限圈,差不多就算稳定了。这时减慢扫描速度,提高扫描线数是可取的方法。
简单的总结:J集合进行双点迭代时,势与势差的关系为Δz[n+1]/Δz[n]≈f"(zn)=2|zn|,
势差(PD)是一个非常有用的量,利用同一个点列的前后项的PD差,可以创建月球表面的那种J集合图,利用同一个点列的PD之比可以创建另一种风格的J集合图。作J集合离不开距离,对距离的变形使用是上色的关键。势差~近似,就是这篇文章的关键词。
------这个方法叫势差法(potential deference--PD method)是比较合理的-------------完END.
  补充说明:今天早上起来,感觉理论上还得补充一点点才完备:
||zn|-|z'n||这才是势差,为什么把|zn-zn‘|当势差呢?因为:
||zn|-|z'n||≤|zn-zn‘|→0(|z-z’|→0).
这说明|zn-zn‘|是准确的势差||zn|-|z'n||的很好的近似。






这个文件完整的包括了代数法的基本构架。双点迭代用7b-fractal tool包中的工具Julia set'重复使用两次就可以构建这种迭代。

附件: PD法(势差法)范例.gsp (2012-11-9 22:54, 13.37 KB) / 下载次数 1639
http://inrm3d.cn/attachment.php?aid=18877&k=329bca42812ccaab8842a80b5b0d7175&t=1714666610&sid=T0Qm8O
作者: myzam    时间: 2012-11-10 20:30

把双点迭代改成单点迭代,放大局部后。。。

作者: myzam    时间: 2012-11-10 22:52

关于Δz[n+1]/Δz[n]的一个命题证明:
设f(z)=z^α+c,,z,z'为任意两复数,对z迭代:z,z1=f(z),z2=f(z1)=f^2(z),...,
zn=f(z[n-1])=f^n(z),对z‘作类似的迭代,规定Δz[n]= Δzn’-Δzn,
则Δz[n+1]/Δz[n]=(f(zn')-f(zn))/(zn'-zn)=f'(zn+t*Δzn)(0≤t≤1),
设f‘(z)的不动点为u,即α*z^(α-1)=z的根为u,如果点列{zn}收敛,则n→∞时,
f'(zn+t*Δzn)→f'(u).从而有:
n→∞时,Δz[n+1]/Δz[n]→f’(u)。
特别的:||zn‘|-|zn||为势差,而:||zn‘|-|zn||≤|zn’-zn|→0(|z-z‘|→0),
所以|Δzn|=|zn’-zn|可以作为势差(PD)的估计。
另f=z^2+c时,f’的不动点u=0,此时Δz[n+1]/Δz[n]=z[n+1]/z[n]→f’(u)=0(n→∞)。
从而|Δz[n+1]/Δz[n]|→0(n→∞),这说明当迭代次数充分大后,Δz[n+1]/Δz[n]比是压缩的。
因此可以直接用这个比值上色。
Δz[n+1]/Δz[n]这个比值也可以这么写:
Δz[n+1]/Δz[n]={z[n+1]'-z[n+1]}/{z[n]'-z[n]}
={f(z[n]')-f(z[n])}/{f(z[n-1]')-f(z[n-1])}
有的学者把这个叫距离之比DR. 这里的数列不是普通的数列,它们是函数列。
其实根本就是势差分析,做势差分析是可以用Taylor展示,展到前三项,这样接近度更好
,还可以用三角级数(做为F级数的替代品)展开势差

作者: myzam    时间: 2012-11-11 00:39     标题: 我使用的调色版~~类中类的架构

一。调色板构建
1.r,g,b的混合比确定色相,如r:g:b=1:0:0=红色,r:g:b=1:1:0=绿色等等。
2.再引入一个参数F,这rF,gF,bF的比值还是等于r:g:b,当引入F后,就可以改变同种颜色的明度。
比如r:g:h=1:1:0=绿,由于F的引入,就可以改变绿色的明度。随着F的值的变化,颜色始终在绿色系列里面变化。
这个F=|φ(zn)|。
3.如果令rF1,gF2,bF3去对应R,G,B,由于这是F1,F2,F3是三个不同的参数,此时r:g:b就确定不了色相了。此时难有规律可言,靠运气上色了。
4.确定参数F的取法,是值得关心的问题。
F常常可以取dist=sqrt(xn^2+yn^2),sin(dist),arctan(yn/xn),|zn|*|Δzn|(这个量叫PD),
arctan(yn-y[n+1])/(xn-x[n+1]),由于颜色面板的色宽设置成了【0,1】,所以上面那些值通常都要去绝对值。如果作图的人保密,看的人是难以猜出别人是怎么上色的。
5.令Δz[n]=z[n+1]-z[n]与势差相关,z[n]有势相关,它们的模和幅角都可以做为上色的参数,这就是上面的两个正切的来源。
  在同一个色相里面变化颜色,颜色的调子是比较统一的,但是有缺点就是显得比较单一,这并不是坏事。
6。对F的构建还可以这样
  上面的上色方式,可以统一的用公式表示为X=t*F(Zn)。X对应标准色带一个位置,还可以像这样构建F:F+α(Zn)就是给F加上一个小小的修正值。
  R=r*(F(Zn)+α(Zn))
   G=g*(F(Zn)+α(Zn))
    B=b*(F(Zn)+α(Zn))
参数α(Zn)∈[0,1],α只要有点点细微的变化就可以实现跨越色相,实现一种眼花缭乱的颜色变化。跨越色相要有个度,色相多了就是乱。α可以取成周期函数,这样跨越色相就是周期性的过程了。从而达到了控制色相总量的目的,色相少了单调,多了就是乱,周期函数刚好可以解决这个度的问题。这就是为什么要用对平移因子通常使用周期函数的原因所在。构建F还可以引入trunc函数,把色的明度分成几大类,就象这样:设dist=sqrt(x^2+y2),如果把色的明度设置成10个等级,就可以这样算trucn{[dist/10-trucn(dist/10)]*10}(这个算式与画板你设置的精度有关,要做相应的修改)。下面的彩图就是这么做出来的,实验上色的明度等级不能太多,多了效果也显示不出来。另外,上色还得要注意值域是否超过主值区间,因为进入常色区间后色彩就没变化了。不注意这点就会发现实验结果和这里所说有的内容不吻合。
二。调色板的构建有很多,但是万变不离其中,要么在同一个色相里面变化颜色,要么就是从一个色相跨越到另一个色相。构建调色板,必须坚持原则:拒绝运气色!原因很简单,如果你构建的调色板是靠的运气色上色,这样的调色板你根本就没法控制它,最终导致调色困难重重,或根本就无法调试色彩。
三。关于HSV的调色板
   色彩学有公式实现:rgb颜色与hsv颜色参数的转换,这就是说只要构建了RGB的调色板,这个调色板同样可以用来完成HSV的上色。既然RGB和HSV的参数色彩学上有公式联系他们,这就是说这两种上色可以认为并无本质的差别,只是RGB更电脑化一点,HSV更接近于生活一点。
四。我就是这样使用调色板的,我不知道别人是怎么使用调色板的。
五。我特别希望玩分形的人多说点自己的看法,错了不要紧,反正都是玩,错了改过来就行了。我就是这么想的,如果我发现我今天写错了,改天我就会订正。科学的东西就是这样在不断的订正错误中前进。没有错误和失败,永远都不会有创造。分形从认真专研到现在半过多月了,我感到分形的关键是算法。
到目前为此:代数法的逃逸时间esct还只是用来挖环,我还没发现esct的特别的用法。也许时候未到。
六。简单的小结
  说了这么多,我的调色板可以用一个公式总结成:X=a*(F+b),其中因子a*F控制同一个色相内的变化,平移因子a*b控制跨越色相的变化,b的控制是比较难的。我理解我的上色方法是r,g,b之比确定类(色相),而F确定同类中的各种颜色(同类中的各种颜色可以用trunc函数划分等级生成跳跃上色)。一句话:类中类的架构。
我只给出了我的方法,没有给出具体的算式,因为分形这个场景会给人无限的想象和发挥的空间,用创建调色板的原则去创建自己的调色板,那才好玩,分形才会显得个性张扬,多姿多彩。
  
  

注:上面的彩图是单参数上色。
作者: myzam    时间: 2012-11-11 19:55     标题: 震荡域控制演示




付:着色公式的构架为a*F,这种思路来自于逃逸算法的逃逸域。震荡控制技术是通过控制扫描点的轨迹来控制色彩的。中间的布尔运算是关键:boolean=sgn(sgn(a)+1),其次三角函数的周期不能太大,太大了震荡不起来。
可以把震荡嵌入到其它分形中,也可以把控制震荡的技术抽取出来单独控制其它分形。





附件: 震荡域1.gsp (2012-11-11 19:55, 7.48 KB) / 下载次数 1552
http://inrm3d.cn/attachment.php?aid=18883&k=6477639123169dc93d426896b1ee70b8&t=1714666610&sid=T0Qm8O

附件: 震荡域2.gsp (2012-11-11 19:55, 7.67 KB) / 下载次数 1547
http://inrm3d.cn/attachment.php?aid=18884&k=ea8b3fd170060ea23be7bf12d63bcdab&t=1714666610&sid=T0Qm8O

附件: 震荡域3.gsp (2012-11-11 19:55, 7.67 KB) / 下载次数 1596
http://inrm3d.cn/attachment.php?aid=18885&k=2ad3c3e73197cc6ef4b5527ae23fe00b&t=1714666610&sid=T0Qm8O

附件: 震荡域4.gsp (2012-11-11 19:55, 8.67 KB) / 下载次数 1546
http://inrm3d.cn/attachment.php?aid=18886&k=89de7fa8b98f9304e9c83c722f35d91b&t=1714666610&sid=T0Qm8O

附件: 借用控制震荡域的方法,选择性显示J集合的图形.gsp (2012-11-11 21:44, 36.58 KB) / 下载次数 1489
http://inrm3d.cn/attachment.php?aid=18887&k=fac944ae4dfa372675111a1cc1c08e99&t=1714666610&sid=T0Qm8O
作者: myzam    时间: 2012-11-11 23:35     标题: 震荡域叠加模拟3D~~域叠加法引入光照因子





上图未加入震荡因子,光照是比较均匀的。

上图在三个域内各加了一个震荡因子,和上一图比照光照就比较明显集中。
这么看来利用震荡域,模拟光照,可以创建立体图形。只是应该把震荡中心放在域外,如果把震荡中心放大域中,就会出现震荡洞。上面的最后两图,设置了3个域。域的中心是第一幅图的那三个位于极限圈的亮绿色的点。在下面的文件里面可以看到。
1.具体做法是:先分别进行单参数上色对R,G,B分别上色,调式好后删除
2.叠加它们 即有,DR=R+G+B,接着进行三参数R,G,B上色,稍调试就得上面的图。
重新令R=r*DR,G=g*DR,B=b*DR,我的调色板,我都写在上楼的,按上楼的调色板做就可以出来。
3.调试好后分别对单参数R,G,B加入震荡因子,这样就可以创建有光照的3D图形。
4.如果不进行域叠加,直接用R,G,B上色,颜色的种类到是多,得到的是另一种有立体感的图。
5.中间用到了逻辑变量。黑色是逻辑变量控制的结果,我还是没有找到逃逸时间esct的用武之地。时候也许还未到。震荡中心总是可以取到域外的,而且震荡中心的位置可以认为的定,它就是光源的中心。
每个域的半径用点来控制,以便调试半径的大小。域的中心选在极限圈上效果最好,因为J集合要显示的是收敛点的图,如果中心不再极限圈上,就会出现嘿嘿的一遍。震荡的用处还马虎,可以用。
另外还可以进一步设置光照半径。

附件: 三域叠加.gsp (2012-11-11 23:35, 14.9 KB) / 下载次数 1557
http://inrm3d.cn/attachment.php?aid=18888&k=e0a0591d54830b96683aa468d6933cf2&t=1714666610&sid=T0Qm8O
作者: myzam    时间: 2012-11-12 11:08     标题: 域(Area)叠加技术阐述:

从控制震荡域的范围,强度中提取的方法,该法与分形无关,是对扫描轨迹上色的一种方法。
下面的文件就不是分形,是用来演示域(area)叠加技术的原理文件。图片是详细做法。
T1:

T2:

除不除r1都可以,通常在应用时都要对area1乘个系数修正它,所以除以r1并不是关键。
图中心的亮蓝色的点a是认为添加的,不是轨迹的色图。
T3:

T4:

T5:

T6:

注:关键词~域,域半径,域中心,光照因子,光照中心,光照半径,逻辑变量。背景总是对应着色参数的0值,所以R,G,B单参数上色时背景为红色,三参数上色时背景就是黑色的,通过平移参数可以改变背景,也可以通过无穷大消除背景。轨道方程:sqrt[(x-xa)^2+(y-ya)^2]=v叫轨道方程,它决定色的走势。改为椭圆sqrt[2(x-xa)^2+(y-ya)^2]色的走势就是椭圆,该为角表出
arctan{[y-ya]/[x-xa]}色的走势就是以点(xa,ya)为中心的线性走势,该为sqrt[(x-xa)^2+(y-ya)]色的走势就是抛物线走势,所以把这个方程叫轨道方程。轨道方程同时解决了扫描法绘制函数图象的问题。用角度做为变量可以形成线性光照因子。

附件: 演示域叠加技术的文件.gsp (2012-11-12 11:08, 8.84 KB) / 下载次数 1694
http://inrm3d.cn/attachment.php?aid=18889&k=5359fd08797d9f88dce926b82efcafef&t=1714666610&sid=T0Qm8O

附件: 线性走势.gsp (2012-11-12 13:45, 6.95 KB) / 下载次数 1584
http://inrm3d.cn/attachment.php?aid=18890&k=ea527e05cd381c7d284eee7195f7ef93&t=1714666610&sid=T0Qm8O

附件: 线性走势1.gsp (2012-11-12 15:18, 6.98 KB) / 下载次数 1573
http://inrm3d.cn/attachment.php?aid=18891&k=51d2a2f2968fa50602b5e2d52f51f902&t=1714666610&sid=T0Qm8O

附件: 线性走势2.gsp (2012-11-12 15:30, 7.38 KB) / 下载次数 1670
http://inrm3d.cn/attachment.php?aid=18892&k=2ae3b84c4d5c5089b7e3c98c9b3e289d&t=1714666610&sid=T0Qm8O

附件: 双曲走势.gsp (2012-11-12 15:45, 7.75 KB) / 下载次数 1621
http://inrm3d.cn/attachment.php?aid=18893&k=705dd9093a20eb2df8837fd6b4b568b3&t=1714666610&sid=T0Qm8O
作者: myzam    时间: 2012-11-13 07:04     标题: 二域叠加之遮罩(裁剪)


注:遮罩就是罩住的内容显示,没罩住的内容就不显示。特别注意,第二个域的中心设置成
a,b更好,这样:r-sqrt[(x-a)^2+(y-b)^2].这是第二个域动,遮罩不动,也可以设置成遮罩动,
域不动来显示内容。
http://www.fractaldomains.com/2011/08/colorfulness-1/

附件: 遮罩原理说明文件.gsp (2012-11-13 09:30, 8.97 KB) / 下载次数 1614
http://inrm3d.cn/attachment.php?aid=18902&k=e1a5b9880b8b2c7ef702503ca7650540&t=1714666610&sid=T0Qm8O

附件: 画颜色球.gsp (2012-11-13 18:00, 10.27 KB) / 下载次数 1710
http://inrm3d.cn/attachment.php?aid=18904&k=3e71ae28716ad219ceb055bdc7e0af8f&t=1714666610&sid=T0Qm8O
作者: myzam    时间: 2012-11-13 22:26

高亮技术HL:

下图是HL技术和域(Area,2个域)叠加技术结合生成的图形
域直接屏蔽了等势线。高亮(high light~HL)会有光泽的效果。
域的中心必须选择在极限圈上,否则就是黑黑的一遍。
高亮原理:{zn}这个序列在n充分大后,假设收敛(事实上我们平时绘制的就是J集合收敛点的图,尽管J集合的点不都是由收敛的点组成,但是收敛点的图是J集合的最好的近似,我们只能绘制J集合的近似图),那么对充分大的n(迭代次数)来讲,zn和z[n+1]会充分接近,
故差zn-z[n+1]会很小,此时zn的前后项,要么位于同一个等势线上,要么跨在不同的等势线上,因此zn-z[n+1]的模要么
是o,要么非0,根据解析函数的最大模原理,必在边界上取到最大模,所以边界会高亮。
由无穷小分析知道z[n+2]-z[n+1]≈f'(zn){z[n+1]-z[n]}=2zn*{z[n+1]-z[n]}.
用这种方式上色,迭代次数n必须充分大(实际上较大就可以了),对于小n值是不能体现其特色的。
由于我的上色公式是:R=r*F,G=g*F,B=b*F,色相由r:g:b决定,所以上色是可控上色.





附件: 高亮技术演示.gsp (2012-11-13 22:31, 16.44 KB) / 下载次数 1713
http://inrm3d.cn/attachment.php?aid=18907&k=897969121b5c3fb4d352d91ddece239f&t=1714666610&sid=T0Qm8O

附件: 高亮技术演示2.gsp (2012-11-13 23:26, 19.16 KB) / 下载次数 1781
http://inrm3d.cn/attachment.php?aid=18908&k=78481037495661b69b0d824dfcca7b16&t=1714666610&sid=T0Qm8O
作者: xuefeiyang    时间: 2012-11-14 10:55

先掌握点基本的分形图形学的技术,在此基础上再探究。
3.jpg

图片附件: 3.jpg (2012-11-14 10:55, 142.25 KB) / 下载次数 1246
http://inrm3d.cn/attachment.php?aid=18909&k=50b0ff6e13e4b15c02f2c875cdc77b46&t=1714666610&sid=T0Qm8O


作者: 榕坚    时间: 2012-11-14 12:03

矛盾促成事物的发展:我们之前一直关注的是分形基本知识,从出图形→图形充满平面(出现了et值)→追求清晰边界(出现了剔除等势线法、两点夹逼或四点夹逼法、DEM法)→装饰逃逸区等等。现在出现了停滞现象,而myzam老师最近所做的工作是从大局上来装饰扫描图(光照,色变)。应该是有意义的,如果消化了前面的所有内容后进行这些着色研究那就更好了。
作者: myzam    时间: 2012-11-14 13:30

51# 榕坚
哦,是这样。这个建议很好。
作者: myzam    时间: 2012-11-14 15:28

50# xuefeiyang
我来猜猜xue的图形,中间有一个很小的线性渐变,猜测是线性上色。边上色的走势也是线性的应该是用了角度参数上色。猜测不知道对不对。
作者: myzam    时间: 2012-11-14 16:49

着色公式的调整,一个小小的细节:  
着色公式为x=aF.颜面面板是色宽为[0,1],用这个公式着色会生成一个色带,如果对该公式简单的平移,象这样x=aF+b,那么x在色带上的对应位置确定会平移,但是一个新的问题产生了。如果设x的值域是V,那么V就会常常超出[0,1],V超过色宽后,色彩就不在随参数的变化了,就是说x进入了常色区间,这不是我们常常想要的结果。这种状况如果出现,如果是RGB上色就是死红色出现,或则是恒紫色出现。怎么办?这需要求出变换x=aF+b的不动点u,把变换修改为x=aF+(1-a)u,不动点u是认为设置的,这样就可以很好的解决这个问题。尤其是在两域叠加时,对修改黑色的背景就很管用。假如设置两个域,这两域的逻辑变量分别是boolean1,boolean2,记bool=boolean1+boolean2(这刚好是布尔和,值为0,1,当点zn在某一域内时,bool=1,当点zn都不在域内时,bool=0).着色公式可以设置成:x=a*F+(1-a)*u,不动点u=(1-bool)*b,b为要输入的参数,1-bool其实就是逻辑变量bool的非运算。这个着色变换就是缩放和平移的结合。
老巷的627楼的图:http://www.inrm3d.cn/viewthread. ... age%3D1&page=63
中间就有一点点死红色出现,那就是值域进入了常色区间的结果,色彩不随参数变化了。


作者: myzam    时间: 2012-11-14 18:54






构建连续势?如和构建?思考中。。。
作者: myzam    时间: 2012-11-16 20:04

跌代中的逻辑判断:
  迭代要进行逻辑判断,这就要求进行布尔运算:与,或,非,异或运算。我的逻辑工具包刚好可以顺利的完成这项工作。甚至可以直接用逻辑变量进行0,1着色。
进行域叠加时,如果需要进行逻辑运算可以用逻辑。还有进行着色时出现了极端颜色0,1可以用逻辑很构建分段函数改变极端颜色。
迭代虽然不是编程,但是编程里面的分支结构,的确可以通过逻辑判断完成。
逻辑工具包logical
关于分形理论的书,大家推荐的《分形图形学》网上收集了一本,字太花,没法看。到是刘隅的《分形几何》写得流畅,值得一看。英国人卡尔内尔的分形几何道理讲的明白,严谨,但是太难。真是各有各的优点。该看看分形书了。
作者: myzam    时间: 2012-11-17 18:16

只要把z^2-0.55+0.5i,画出立体感来,一切问题都解决了。画M集要比画J集容易,因为势对于M集的c来说天然的连续。而势对于J集合z^2-0.55+0.5i确类似于简单函数是跳跃的。如果能构建J集合的连续势,问题又好办了。寻找J集合的可用的连续势是问题的关键。带极点的解析函数构建的分形作图比不带极点的解析函数作图要简单。迷糊。
作者: myzam    时间: 2012-11-17 22:56

构建连续势终于有点点进展了。还差理论证明和实践检验。J集合的外面要让它不平坦。

作者: xiaongxp    时间: 2012-11-18 14:36

58# myzam
不知赵老师的震荡是要达到什么效果。看41#第二图,估计没有用震荡,分形的边界表现得非常清楚,而上楼的边界却是混沌的,估计用了震荡。作复分形重点是使边界更清晰起来,而内外部的着色只是为了渲染得更漂亮,但不可喧宾夺主。
J set c=-.55+.5i.gsp (19.11 KB)
J set  c=-.55+.5i.jpg
J set  c=.37042+.10583i.jpg

图片附件: J set c=-.55+.5i.jpg (2012-11-18 14:40, 54.67 KB) / 下载次数 1213
http://inrm3d.cn/attachment.php?aid=18930&k=a276b57f7f385f22db92d4b801832c24&t=1714666610&sid=T0Qm8O



附件: J set c=-.55+.5i.gsp (2012-11-18 15:04, 19.11 KB) / 下载次数 2421
http://inrm3d.cn/attachment.php?aid=18931&k=60dbf6f7695d75c3ebda3883ab16ab69&t=1714666610&sid=T0Qm8O

图片附件: J set c=.37042+.10583i.jpg (2012-11-18 15:13, 53.83 KB) / 下载次数 1218
http://inrm3d.cn/attachment.php?aid=18932&k=d63593de87f901954de1692f6e121e6c&t=1714666610&sid=T0Qm8O


作者: myzam    时间: 2012-11-18 21:34

59# xiaongxp
是的。上图我就是郁闷,我偶然这么用的:
上楼没有有震荡去修饰边界,用的是下面这个:
abs(|zn|-|z[n+1]+h1+h2*i|)这个量居然是个连续的变量,所以外环成管状了,但是内部出现了黑影,没法弄掉,所以郁闷着。
作者: myzam    时间: 2012-11-19 13:37

公布分形算法的秘密:  阅读分形板块,一个遗憾永远都存在:图片多,文件多,但鲜有文字经验介绍,无论是有意还是无意,但事实上就是一种保守秘密,那些图片对后来的学习者帮助基本不大,对后来者帮助最大的是经验介绍,遗憾真是遗憾,当然这是个人的自由,无可厚非。这里我把网上搜到的分形的三种算法公布在这里,望给来者有点启迪。
分形典型算法文章
这篇文字主要介绍了:逃逸时间算法,距离估计算法,IFS迭代。
分形板块满篇都在说距离估计算法,但是你要想找到文字什么是距离估计算法,恐怕就很难了,正是因为没有基本的经验介绍,分形被神秘化了。
分形理论和计算机模拟
分形图形学
分形几何原理说明:这里列的资料在超星网都有,直接在网上阅读,资料很多。不用下载。
我下了个阅读器来读,结果我把阅读器删除了,因为我发现网上的效果比下载下来看舒服。要分形的资料可以直接到超星网找,很多。
作者: xuefeiyang    时间: 2012-11-19 18:33

距离估计算法,坛子上早已有了,只是你当时没有跟着学而已:http://www.inrm3d.cn/viewthread. ... ;extra=&page=10
作者: 柳烟    时间: 2012-12-4 16:59

距离估计算法,坛子上早已有了,只是你当时没有跟着学而已:http://www.inrm3d.cn/viewthread. ... ;extra=&page=10
xuefeiyang 发表于 2012-11-19 18:33
分形版块的几个老师,要说保密,个人认为不存在。主要原因是,一来分形涉及到的一些初级复变函数数知识,要想学分形,对复数的运算,几何意义,棣妹弗公式,一些简单的复变函数,应知晓。要学这分形,这就全靠自已去苦钻一下。因为大家比较忙,不可能为了搞分形,从这些基础知识讲起。坛子上推荐过的书:如分形艺术程序设计,不妨找来看看。另各种分形的造法,这坛子上,或者视频,或者提供源文件,或者只语片言的讲解,都将秘密宣尽了,只要翻这板块的帖子,并刻苦钻研实践,才能办到。分形用的板技相对来说,要高一些的。要学这分形,主要自学为主,深思为主,实践为主,不能指望什么都由这里的几个老师全盘灌输,因为时间实在有限。兄台可看看我整的复分形重要索引,将秘密宣得差不多了。




欢迎光临 inRm3D: 画板论坛 (http://inrm3d.cn/) Powered by Discuz! 7.0.0