Mandelbrot集自动分支缩放功能未达预期的问题排查
代码核心问题与修正方案
1. 新区域边界计算逻辑错误
你当前new_area函数的边界计算完全不符合缩放要求:
- X1的计算逻辑错误:
X1 = X1 + k * branch[-1][0]是在原有右边界基础上额外向右偏移,而非将右边界对齐到分支右端,正确计算方式为:新X1 = 新X0 + (分支末尾x坐标 - 分支开头x坐标) * k - 完全未维护Y方向的上下边界:你当前的变量体系缺少Y1(Y方向下边界),也没有按分支的Y坐标范围调整Y轴缩放,导致Y轴范围始终没有对应缩放,视图比例完全失衡。
2. 分支搜索逻辑缺陷
你当前仅扫描同一行水平方向连续的集合内点,找到符合长度的分支就立刻终止搜索。但Mandelbrot集的分支几乎不会沿水平方向延伸,这种搜索方式只能匹配到左上角最边缘的极短水平点段,每次缩放的可用区间本身就极小,多次迭代后自然看不出变化。
3. 固定迭代次数无法适配深度缩放
向Mandelbrot集深处放大时,集合内点需要更高的迭代次数才能判定是否逃逸,固定迭代次数n会导致深度区域的集合点被误判为逃逸,你根本无法识别到更深层的分支。
4. 分支长度阈值设置不合理
你当前设置b < len(branch) < 50,仅匹配长度在6-49之间的连续点,这种短分支本身可缩放空间极小,多次缩放后变化会微乎其微。
简易修正参考
你可以先修改new_area函数的边界计算逻辑,补充Y1边界的维护,同时调整分支搜索逻辑为搜索连通区域而非单行连续点,迭代次数随缩放次数同步上调即可解决问题。
内容的提问来源于stack exchange,提问作者Din
相关产品推荐
相关产品推荐

