返回列表 回复 发帖
如果我们在组合变换的基础上再叠加一次简单变换,将会得到更多的图像,不过这种设计近乎钻牛角尖,所以,尽管编写了代码,这一功能还是少用为宜,因为它是以牺牲速度为代价的。
1.jpg
2014-11-8 14:46

2.jpg
2014-11-8 14:46

3.jpg
2014-11-8 14:46

4.jpg
2014-11-8 14:46

5.jpg
2014-11-8 14:46

6.jpg
2014-11-8 14:46

7.jpg
2014-11-8 14:46

8.jpg
2014-11-8 14:46

9.jpg
2014-11-8 14:46

a.jpg
2014-11-8 14:46

htm0306.rar (4.1 KB)
下载学习,多谢楼主慷慨分享好资料!
非常感谢xklppp老师的讲解,虽然对于javascript学习起来很吃力——原先没有接触过——我会慢慢学习。
我把您的思路用UF写出来了——尽管UF是专业的分形软件,但是您实现的功能在UF用一点难度——不知您是否介意我把它贴出来?
捕获34.PNG
2014-11-5 16:24
捕获35.PNG
2014-11-5 16:24
捕获36.PNG
2014-11-5 16:24
捕获37.PNG
2014-11-5 16:24
New.jpg
2014-11-8 14:48
55# lnszdzg
杜老师好!你是对的,对于软件和语言,每个人都有自己的偏好,要人放弃自己手头上称手的工具而从头再来是件蛮痛苦的事情,几何画板也好,UF,mathCad 也好,vb,vc,c#,javascript 也好,统统都不重要,重要的是使用这些工具时的思维意识和行为模式,这个帖子讨论到这里,程序所具有的功能和效果,用 javascript 实现并非上上之选,但比起其他的算法语言和软件来,javascript 却是最简单最轻松的。不过,这也还不是这个帖子的最终目的,我只是想借 javascript 编写复变分形程序中遇到的一些问题向大家传递一个信息:复变分形在最后图形的渲染上确实有着很多精妙绝伦的手法,产生出令人震撼的视觉冲击。然而,作为初学者,复分形的结构本身才是首先要解决的问题,所以,选择一个恰当的起点和视角是非常必要的。
谢谢杜老师,衷心希望能多贴美图,多提意见。
谢谢xklppp老师!
感谢您的讲解。虽然只知皮毛,但是我从您的程序中学到了不少东西——最主要的一点事:程序的模块化思想——太精妙了!我把UF的代码发到Mathcad吧里了——没有征求您的意见,不介意吧?
http://tieba.baidu.com/p/3394265041
57# lnszdzg
很好啊!说明这个帖子的讨论还是有点价值的,讨论的过程中,我们并没有纠结在编程语言本身上,其目的就是希望大家不要被语言束缚,设计模式才是最重要的。
很多的迭代模型需要用到 z,c 以外的参数,所以,窗体中新加了 A,B 相应的输入框,后面的newton,nova 要用到 Q,R,这里预先一并加上。
    迭代模型数组形如:
    var mjModels=[{
    para:[],
    default:"",
    func:function(){}
    }},}
    ......
    }},{
    para:[],
    default:"",
    func:function(){}
    }}];
    较之前面的 mjColoring 和 mjTransForm,这里每个元素多设了一个 default 属性,用来记载那些刁钻的参数值,程序没有给出相应的处理代码(大家可以自己试着开发),只是显示在界面中以作提示之用。
    另外,如果把:
    var iterator=function(x,y,a,b)
    {
        return mjModels[mdx].func(x,y,a,b);
    }
    改成:
    iterator=mjModels[mdx].func
    程序的运行速度要快一些,画布越大效果越明显。由于加入了三十几个迭代模型,代码量急剧增加,不过,核心代码就那么几十行。
1.jpg
2014-11-8 14:53

2.jpg
2014-11-8 14:53

3.jpg
2014-11-8 14:53

4.jpg
2014-11-8 14:53

5.jpg
2014-11-8 14:53

6.jpg
2014-11-8 14:53

7.jpg
2014-11-8 14:53

8.jpg
2014-11-8 14:53

9.jpg
2014-11-8 14:53

a.jpg
2014-11-8 14:53

htm0401.rar (6.49 KB)
基于下面的算法,程序给出了六个 newton 迭代模型:
newton: z=z-R[f(z)+c]/f'(z)
   nova: z=z-R[f(z)/f'(z)]+c
    窗体中增加了一个 newton/nova 切换开关 nt 复选框,迭代模型中的实现代码为:
nTa=nT*a,nTb=nT*b
nVa=(1-nT)*a,nVb=(1-nT)*b
    其中:
nT=1 或 0
    也就是:
z=z-R{[f(z)+(nTa,nTb)]/f'(z)}+(nVa,nVb)
     当 R=(1,0) 时,上式便在标准的 newton 和 nova 之间切换。
     就我本人所知道的有关复变分形的知识,程序已接近尾声,在不影响原结构的基础上对程序代码作了较大幅度的调整。
b.jpg
2014-11-8 14:58

c.jpg
2014-11-8 14:58

d.jpg
2014-11-8 14:58

e.jpg
2014-11-8 14:58

f.jpg
2014-11-8 14:58

g.jpg
2014-11-8 14:58

h.jpg
2014-11-8 14:58

i.jpg
2014-11-8 14:58

j.jpg
2014-11-8 14:58

k.jpg
2014-11-8 14:58

htm0402.rar (7.29 KB)
返回列表