- UID
- 30376
- 帖子
- 527
- 精华
- 1
- 积分
- 6520
- 来自
- 湖南湘潭
|
21# lnszdzg
RGB是色彩模式中最简单的一种,便于计算机处理,但主观视觉上不容易把握。HSL(HSV)更符合人的习惯,而最自然的则是Lab模式。
前面的伪代码写得蛮糟糕的,加了些文字说明,看能不能好一些:
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 【返回迭代轨迹】 |
|