程序编到这里,仍然有两个问题:
1.在输入框中输入数据后,须点击“绘图”按钮,输出窗口才会被刷新。
2.几乎所有的绘图软件都提供了另外一种所见所得的数据输入方式,对于这种几何图形,更直观的方式是通过拖动图形的关键点来即时改变其形状,我们暂且称之为屏幕输入。
这里先解决第一个问题,唯有如此,才能解决第二个问题。
进一步调整代码:
<script>
function Cycloid(){}
function formSetup()
{
var RR,rr,pp;
var drawing=function(){}
var resetCycle=function(){}
var dataVerify=function(){}
var initComponents=function(){}
var addEvent=function(){}
}
</script>
大家都是玩复形的高手,所以,我们这里只需就程序设计的思路和代码的结构展开讨论。
对于 mandbrot 集,我们有伪代码:
扫描 C 平面
{
对当前扫描点进行几何变换(如果需要的话).......变换模块
对当前点按给定的算法(如:z=z^2+c)进行迭代....迭代模块
根据迭代结果对当前点进行着色.................着色模块
}
把里面的功能模块独立出来写成函数,我们很容易就能写出 mandbort 集的 javascript 代码框架:
function Mandbrot()
{
var iterator=function(){} //迭代算法
var transPlane=function(){} //对扫描平面进行几何变换
var setColor=function(){} //设置当前扫描点的颜色
var scanCplane=function(){} //扫描 C 平面
}
在窗体代模块中,我们设置几个变量:
var Zr=0,Zi=0,Cr=0,Ci=0,eM=2,eT=20;
其中 z=(Zr,Zi)、c=(Cr,Ci)、eM(逃逸半径)、eT(逃逸时间),Cr、Ci暂时没用。