返回列表 回复 发帖
178# xuefeiyang
这类分式模型一般都很难搞,z0 不知如何给,那一大串的演算很麻烦。
002.jpg
001.jpg
182# xuefeiyang

谢谢,很惭愧,谈不上指点。每个人的认知都是有疆界的,跨界学点东西,做点广度的扩展是应该的,也是必需的,加入这个论坛以来在你和各位专业老师的指道下确实是获益颇丰,再次一并谢过。
184# xuefeiyang

那太好了,谢谢。要我算不知到要到什么时候去。“蜂窝算法”现在只是有明暗的效果,色彩还是没出来,我正在网上学。
005.jpg
186# xuefeiyang
应该是捕捉点 cp 的设置问题,只要不是cp(0,0), 都会有这种情况:
001.jpg
002.jpg
作者着色是这样的,记住在迭代路径中达到与捕捉点距离(dist)最小的那个点的迭代次数 iter(也就是dist最小的点在迭代路径中的序号), 将其作为在色带中的索引值。色带的好处是随时可以定制,但要弄出好的一套色系却是不容易。所以,我用了一种偷懒的办法:
色相值 H= |最小点幅角| / PI
003.jpg
色相值 H=( |最小点幅角| + |次小点幅角| )/(2PI)
004.jpg
原来所有的都不变,只是在对dist, dist2, trap排序时,同时记下dist所指向的点,可以是迭代点本身,也可以是点在迭代路径中的位置,这个位置就是最小距离点的迭代次数,这样计算完以后,除原来获得dist,dist2的值外,还多一个dist所指向的点,也就是迭代路径中与捕捉点cp距离最近的点本身的信息。
191# xuefeiyang
001.jpg
这个幅角因该不是dist那个点的幅角。
这种方法可以避开条件判断找到最小距离值,但距离最小究竟是哪个点,却是无法知道,就 a, b 来说,小=(a+b-|a-b|)/2, 大=(a+b+|a-b|)/2, 究竟 a 小还是 b 小不得而知。
并且,当排序元素超过两个时就非常麻烦,这里可以排三个,是因为有个前提:dist<dist2。
这里的幅角着色必须是与cp距离最小的那个点的幅角,在HSB( h, s, b )中,
若蜂窝特征值 t = 1 - pow( 1 - dist / dist2, p ),则:
h = |距离最小点幅角|/PI,
s = sqrt( t ),
b = t;
191# xuefeiyang

有一种侥幸的计算,可以记住距离最小的点:
z 为之前那个 dist 点, z1 为 trap 点
s = sgn(trap-dist)
z = .5*(1+s)*z+.5*(1-s)*z1
赌 trap<>dist。
次小点 dist2 则先要确定 trap 和 dist 中谁大,然后按同样的方法也可以记下。
194# xuefeiyang

思路是完全正确的,只要z0<>0 (比方说:z0 = c)  就可以解决问题:
若 em = 逃逸半径,cp = 捕捉点,则:
dist 对应点 z = z0,
dist = |z0 - cp|;
dist2 对应点可设为 z2 = em*z0 = ( em*z0.r,  em*z0.i ),
dist2 = |z2 - cp|;
不知道这样行不行。
196# xuefeiyang
没问题啊,把明暗逆反就行了。
可以根据画板的色彩特点,对 dist,dist2做些后期处理,因该是没问题。每个系统的色彩处理都有些许的差异,同样的 HSL,HSB,HSV 模式,我弄出来和Mathematica的就是不一样。
198# xuefeiyang
000.jpg
这样计算,实际上是 trap 和 dist2 中的小者,而不是 trap 与 dist 中的大者与dist2 的比较,看样子还是不能偷懒啊:
dist2=.5(.5(dist+trap+|dist-trap|)+dist2-|dist2-.5*(dist+trap+|dist-trap|)|)
在确定对应点时,|dist-dist|... 应该恒等于 0。
返回列表