返回列表 回复 发帖
001.jpg
002.jpg
003.jpg
001.jpg
002.jpg
003.jpg
004.jpg
005.jpg
006.jpg
007.jpg
008.jpg
011.jpg
135# xuefeiyang
雪飞扬老师好:

z = 1 - Length[data]/30; 实时迭代次数/最大迭代次数 ( 1 - 0 )

Hue[ Arg[Last[data]]/(2Pi), 色相:终点幅角/2Pi( 0 - 1 )
     Min[1,2(1 - z)], 饱和度:( 0 - 1 )
     Min[1, 2z] 亮度:( 0 - 1 )
   ]

Mathematica 的 Hue 函数处理色彩应该是 HSB 模式,按这里的算法直接移植效果蛮奇怪的。
1.jpg
所以,只是用终点幅角作为色相值,而饱和度、亮度就随意发挥了。
2.jpg
这是名叫 DLD ( Discrete Lagrangian Descriptors ) 的算法,渲染出“放射曲线”,与“边界算法”结合,用以展示复分形结构。
https://arxiv.org/abs/2001.08937 文件太大传不了,这是.PDF文件下载地址。

若 e 为迭代路径上的点集,则可计算 DLD 值:

     DLD = sum{( e[k+1].r - e[k].r )^p + ( e[k+1].i - e[k].i )^p } / n;

     k = 0....n-1, n = 迭代路径长度, p > 0。
0001.jpg
0002.jpg
加入黎曼球映射:
0003.jpg
0004.jpg
映射二:
0005.jpg
0006.jpg
为简单见,这里只用灰度着色,可以调整 p 值、或修正 a 值 ,来达到不同的效果。
138# xuefeiyang

对复平面进行几何变换:
    tile( z, k = 1 ) {
        return Z.new( tan( sin( z.r ) ) / k, tan( sin( z.i ) ) / k );
    }
返回一个实部为 tan( sin( z.r ) ) / k,虚部为 tan( sin( z.i ) ) / k 的新的复数,tile 是铺贴的意思,k 指铺贴频率。
001.jpg
加放射线也还不错
002.jpg
146# xuefeiyang

rx,ry,rz,xx,yy,zz 复平面迭代点黎曼映射得三维坐标,都不参与迭代。

迭代轨迹:{r0, i0}, { r1, i1}, { r2, i2},...,{ rn, in}

黎曼变换后得:{x0, y0, z0}, {x1, y1, z1}, {x2, y2, z2},...,{xn, yn, zn}

DLD值:={ (x1-x0)^p+(y1-y0)^p+(z1-z0)^p + (x2-x1)^p+(y2-y1)^p+(z2-z1)^p........} / n


黎曼变换:

    rieman( c ) {
        let r = Z.norm( c ), d = 1 / ( r + 1 ),
            x = 2 * c.r * d, y = 2 * c.i * d, z = ( r - 1 ) * d;
        return { x, y, z };
    }
003.jpg
001.jpg
000.jpg
149# xuefeiyang
这里面凡是带高光放射线的都是用的DLD算法,我这个脚本除非常稳定的一些功能模块外,几乎所有的代码都可以在运行窗口中实时编辑,当初做的时候,调了好一些的参数,69#的效果应该用的是色带,调了半天也没出来。下面是两种DLD效果:
02.jpg
01.jpg
03.jpg
04.jpg
几何画板就好多了,所有的参数设置都保留在画板文件里。
151# xuefeiyang

是的,我也没找到方法。只是有这样一些现象:

1,不同的模型等势线的强弱不同,所以一般都选择那些等势线较弱的。
2,大多情况下,加大逃逸半径 em, 可以弱化等势线,但放射线也会跟着损失掉。
3,a, p 值设置的小一些,放射线要丰富一些,但色彩会显得淡些。
4,最大迭代值 et 小一点,放射线要多一点,强一点,但又要以牺牲模型本身的精细结构为代价。
01.jpg
DLD 原本就是要与“边界算法”组合使用,同时来极化放射线(external rays)和等势线(equipotential lines), 用以揭示分形结构的。这太过专业,我是完全弄不明白,拿 DLD 来做视觉辅助,也纯属业余娱乐。其实我做的效果大多都回不去,根本记不住那些参数。
151# xuefeiyang

真是蛮搞笑的,时间久了,都忘记了,等势线的弱化其实很简单,用DLD值着色时避免使用迭代次数就可以了:
000.jpg

01.jpg (175.21 KB)

01.jpg

返回列表