返回列表 回复 发帖
17# xklppp

MC支持RGB,SLH,SHV着色模式,没有alpha通道。
21# lnszdzg
RGB是色彩模式中最简单的一种,便于计算机处理,但主观视觉上不容易把握。HSL(HSV)更符合人的习惯,而最自然的则是Lab模式。
前面的伪代码写得蛮糟糕的,加了些文字说明,看能不能好一些:
4.gif
2015-1-4 08:31


dr←(Realmax-Realmin)/Width   
di←(Imagemax-Imagemin)/Height  【(dr,di)为画布上单位像素所对应的复平面的大小,也就是画布到复平面的缩放比,复平面到画布的缩放比则为(1/dr,1/di)】

Ca←Realmin+X0*dr ....(Zr←Ca)
Cb←Imagemin+Y0*di ..(Zi←Cb)  【(Ca,Cb)为复平面扫描路径上的初始点,迭代过程中,z 的初始点取 c 的值】
px←(Xt-X0)*dr/t
py←(Yt-Y0)*di/t  【t 为路径上的点数,(px,py)为扫描路径上的单位点所对应的复平面的大小,也就是从当前点到下一点的实轴步长 px 和虚轴步长 py】

for k∈0,1..t  【从 0 到 t 在路径上逐点扫描】
    orbit←iterator(Ca,Cb,Zr←Ca,Zi←Cb)  【迭代(c,z),返回记录迭代轨迹的数组 orbit】

    for j∈0,1..orbit.length  【遍历迭代轨迹 orbit 的所有点】
        x←(orbit[j].r-Realmin)/dr
        y←(orbit[j].i-Imagemin)/di  【轨迹上的点为复平面上的点,所以,这里将轨迹上的每一点按缩放比例还原成画布上的点】
        drawpixel(x,y)  【在画布上描出该点(x,y)】

    Ca←Ca+px
    Cb←Cb+py  【扫描路径上的下一点

iterator(Ca,Cb,Zr,Zi)  【迭代模型】
    return orbit  【返回迭代轨迹】
返回列表