返回列表 回复 发帖
练习16. 复分形的等势线作法
      迭代格式为z→f(z)+c的分形(其中f(z)为复压缩变换),对c着色叫广义Mandelbrot集,对z着色叫广义Julia集。
      从前面两练习可以看到,用逃逸时间算法得到的分形由一圈一圈的等et环包裹着。根据等et环的分布的不均匀性,对于点z关于同一小模长平移向量的平移变换点,并不总是和z落在同一等et环内,我们用示性数s=0或1来区别这种若即若离的状态,并以此为着色参数对z或c进行着色,这种作图方法叫复分形的等势线作法(由changxde老师首先引入画板分形)。
     下面练习迭代格式为z→1-z^2+z^5/(2+4z)+c的广义J集的等势线作法。
一、构建迭代格式(坐标公式)
     1. 打开“复分形扫描框架【可调小扫描线】”,调用“画板分形常用工具箱”的“z^2”工具,求出z^2的横纵坐标,从“数据”菜单计算1- z^2的横纵坐标;
     2. 该k=5,再用“z^k”工具计算z^k的横纵坐标和从“数据”菜单计算2+4z的横纵坐标,用“z[1]÷z[2]”工具计算z^5/(2+4z)的横纵坐标;
     3. 用“z[1]+z[2]”工具计算迭代格式1-z^2+z^5/(2+4z)+c的横纵坐标。
二、由变换z→eT求z的变换点z''
     1. 调用“迭代终点Z、T”工具,依次匹配点z、迭代格式1-z^2+z^5/(2+4z)+c的横纵坐标,得Z、T;
     2. 作z→Z、p0→p0+p,作深度为n-1的迭代;
     3. 调用“et(eT)、em(eM)”工具,先后匹配点Z、T的迭代象,得et、em。
     4. 选中点z和点eT,作自定义变换z→eT,隐藏点eT,在框架点P所在一边上取点A,度量PA的距离,作点z的向右比为PA的距离的平移象z',对z'施行变换z→eT,得点z''(位于T的迭代象上),隐藏z';
三、扫描线着色
     1. 调用“等高线示性数s”工具,匹配点z''得示性数s;
     2. 调用“灰度着色”工具,对点z着色,往下同练习14处理;
     3. 将点c定位于(-0.166,0.13),改n=150,r=3.5,编辑s=0.5(1-sgn(PA-m))(注:1后面的运算符±转化为正负片转化效果),采样数200,移动点A,使PA的长减小几近为0,保存后扫描即成下图:
等高线J集.jpg

等高线J集.gsp (19.57 KB)

在制作“等高线J集”过程中,发现“z^k”工具在z=0时未定义,现已更正,工具箱已同步更新。
   
    感言:实践出真知啦!
78# xiaongxp

1、工具中是否应为1-p;
2、带预览工具为何有两个x,y轴,感觉有冗余;
另求et工具是否应为(yet-yt)/eTstep.
不知感觉对否。
78# xiaongxp

1、工具中是否应为1-p;
2、带预览工具为何有两个x,y轴,感觉有冗余;
另求et工具是否应为(yet-yt)/eTstep.
不知感觉对否。
mjj_ljh 发表于 2011-1-22 15:31
梅兄研究问题一向严谨,感谢指正。1、2两问题已解决,文件随即更新。et工具原设计0时刻点对应纵标为0,不用点T0了,没问题。
练习17. 复分形的拟3D作法
    设复平面上点(x,y),变换:
            x'=x*cos(θ)-y*sin(θ)
            y'=-cos(φ)*[x*sin(θ)+ y*cos(θ)]+ sin(φ)*h*g(et,em)
(其中θ为水平线转角,φ为水平面转角,h为纵向最大高度,g(et,em)为关联et、em的实函数)即为拟3D变换(最早由xuefeiyang引入画板分形)。
    下面以经典Julia集和Mandelbrot集为例,练习复分形的拟3D作法。
一、对迭代格式z→z^2+c用逃逸时间算法求R、G、B
    下载最新版“复分形扫描框架【可调小扫描线】”(1月23日更新),先按练习14作到三.1步,得s、R、G、B;
二、作对点z(或c)作拟3D变换
    1. 调用“画板分形常用工具箱”(必须下载23日最新版)的“拟3D变换”工具,匹配点z(或c),得“拟3D变换点”;
    2. 调用“RGB着色”工具,匹配“拟3D变换点”,同时选中点z(或c)和“拟3D变换点”的着色点,进入“变换”菜单,创建自定义变换,得“颜色变换1”,再取消z(或c)的着色点选中状态;
    3. 选中扫描线,按“Ctrl+1”或进入“变换”菜单选“颜色变换1”,将颜色变换到扫描线,此时系统默认选中扫描线的颜色变换象,直接进入菜单“编辑”\属性\绘图,填采样数=200,显示为“连续的”;
    4. 系统仍默认选中扫描线的颜色变换象,直接进入菜单“显示”\跟踪变换路径、线型“极细”;
    5. 该参数n=160,r=200,sheta=2π/3,phi=2π/5,c=-0.75-0.20i,适当调节H的高度,保存;
      6. 工作面有两个扫描按钮,扫描方式一个向前一个向后,拟3D作图应采用向后扫描,扫描次数一次。扫描图如下:
Julia set 6.jpg

Julia set 6.gsp (23.16 KB)
    下图为Julia集,参数为:n=160,r=200,sheta=π/12,phi=2π/5,c=0.31+0.03i,采样数=150:
Julia set 5.jpg

Julia set 5.gsp (23.15 KB)
    下图为Mandelbrot集:
Mandelbrot set 3.jpg

Mandelbrot set 3.gsp (17.85 KB)

trunc函数也能实现雕刻,而且扫描框内所有点均有意义。
Newton.GIF
大展鸿“兔”

Mandelbrot set 3(灰度).jpg

Mandelbrot set 3(灰度).gsp (15.61 KB)

练习18. 免工具M集的作法与缩放框架的应用
      借助于“画板分形常用工具箱”,我们练习了作复分形的基本方法。但是,画板复分形的数学原理却深深隐藏在这些工具里,要真正享受到其中的数学乐趣和艺术魅力,还得要免工具一步一步实践画板复分形的制作过程。下面以经典Mandelbrot集的局部放大分形图的制作为例,介绍复分形的免工具作法。
一、计算迭代格式
      1. 打开“复分形扫描框架【缩放预览取景】”(可以说,此扫描框架的发明,是xuefeiyang老师对画板复分形的里程碑性的贡献,感谢他的无私分享),先另存为“局部放大M集”,
      2. 从“数据”菜单计算:x=xz^2-yz^2+xc,y=2*xz*yz+xc;
二、构建迭代象,求逃逸临界点模em和逃逸时间et
      1. 计算逃逸时间示性数p:当点z=x+yi 的模|z|≦r时,p=1,否则p=0,即p=0.5(1-sgn(0.5+sgn(sqrt(x^2+y^2)-r)));
      2. 作点z的p变换点Z:当p=1时z向前迭代一次,当p=0时z停止与当前位置,即Z= xz *(1-p)+x*p+i*[ yz *(1-p)+y*p],绘制点Z;
      3. 计算p0+eTstep*p,度量T0的横标,绘制点T(x T0,p0+eTstep*p);
      4. 作深度为n-1的迭代:z→Z,p0→p0+p;
      5. 改n=5,将x轴上单位点、点z的位置作适当调节,求Z和T的迭代象的终点,分别记为eM和eT,
      6. 度量eM与坐标原点的坐标距离记为em,度量eT的纵坐标yeT,计算yeT* eTstep^-1记为et;
三、着色与放大、定位
      1. 计算灰度参数s=ln(0.5*et)-8*log(0.1+ln(1+em))(注:根据画面着色情况,要作适当编辑);
      2. 以s为参数对点c进行灰度着色,并变换到扫描线上,设采样数为“离散的”、点形为“最小”,
      3. 将点z合并到原点,改n=500~1000,r=2.8后保存。往下可自行用预览取景框定位放大,直到得到你所满意的分形图,再保存。
四、“复分形扫描框架【缩放预览取景】”的功能说明
      “初始化”——使坐标原点、预览取景框置于扫描框架中央,坐标系单位长度还原成1厘米;
      “预览取景框”——用于定位、取景和预览。其“+”字交叉点为定位中心,每一次缩放的倍率,是通过“预览取景框”或扫描框的大小调节自动确定的;预览功能的使用,要先将颜色变换映射到其小扫描线上,采样数以两位数为宜,再作其函数簇,采样数仍以两位数为宜,其图形画面粗糙但可预览缩放后的大概结构。在使用预览取景框时,先粗扫一遍,再用预览取景框将要放大的部分框住,按“缩放定位”一次后,再按“横向扫描”或“纵向扫描”,则扫描出来的图形的尺寸与原图形尺寸倍率可从表格“缩放比”查得;往下每一次缩放定位前,都应双击一下表格,以记录下一次缩放比,最终计算出所有缩放比的积,这就是所得图形的尺寸相对于1 厘米一个单位的图形的缩放倍率。

下图定位中心为c=-0.76758+0.10557i:
Mandelbrot set 3.2(灰度).jpg
88# xiaongxp
这幅图的着色已经不下十遍,总是不大满意,颜色多了又嫌的乱,少了又觉得单调:
4.JPG
89# 榕坚
你这个色彩挺不错的,对此图我就不敢用彩色。
返回列表