Mandelbrot集的最新变化形态一览——MandelBox,Mandelbulb,Burning Ship,NebulaBrot

简介: 该文介绍了几种基于Mandelbrot集的衍生形态,包括Mandelbulb、MandelBox、Burning Ship和NebulaBrot。Mandelbulb是3D扩展,使用球坐标;MandelBox利用盒映射创造复杂形状;Burning Ship以复数模和实部迭代;NebulaBrot则结合多种分形特征。文中提供了简单的Python代码示例来生成这些图形,并提到了相关学习资源。

Mandelbrot集的衍生形态如MandelBox、Mandelbulb、Burning Ship和NebulaBrot都是基于Mandelbrot集的基本概念,但它们在公式和渲染技术上有所不同,从而产生了更为复杂和多样化的图形。下面我会给出这些衍生形态的一些基本介绍和代码示例。

Mandelbulb

Mandelbulb是三维空间中的Mandelbrot集的扩展,由Daniel White和Paul Nylander在2009年提出。它使用球坐标系而不是复数坐标系。

Python代码示例 (Mandelbulb)

Python

import numpy as np
from scipy.spatial import SphericalVoronoi
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt

def mandelbulb(x, y, z, max_iter=8):
    c = complex(np.sqrt(x*x + y*y), z)
    z = 0.0j
    for i in range(max_iter):
        z = z*z + c
    return abs(z)

x, y, z = np.ogrid[-2:1:100j, -2:1:100j, -2:1:100j]
vals = np.vectorize(mandelbulb)(x, y, z)

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.voxels(vals < 2.0, facecolors='red')

plt.show()

MandelBox

MandelBox是另一个三维分形,由Tom Lowe在2010年创造。它使用盒映射(box folding)来创建复杂的形状。

Python代码示例 (MandelBox)

Python

def mandelbox(x, y, z, max_iter=8):
    z = complex(x, y) + z
    for n in range(max_iter):
        if abs(z) > 2:
            break
        # Box folding
        z = 2 - abs(z) if abs(z) > 1 else 2*z*z + z
    return n

x, y, z = np.ogrid[-2:1:100j, -2:1:100j, -2:1:100j]
vals = np.vectorize(mandelbox)(x, y, z)

# Plotting the Mandelbox using matplotlib or any other plotting library

Burning Ship

Burning Ship是一个二维分形,由Michael Michelitsch和 Otto E. Rössler 在1992年定义。它的迭代公式与Mandelbrot集类似,但使用的是复数的模和实部。

Python代码示例 (Burning Ship)

Python

def burning_ship(x, y, max_iter=8):
    z = complex(x, y)
    for i in range(max_iter):
        z = (z.real ** 2 - z.imag ** 2, 2 * z.real * z.imag)  # Complex conjugate
        z = complex(abs(z[0]), abs(z[1])) + z
    return abs(z)

x, y = np.ogrid[-2:1:100j, -1.5:1.5:100j]
vals = np.vectorize(burning_ship)(x, y)

plt.imshow(vals.T, extent=[-2, 1, -1.5, 1.5], cmap='hot')
plt.show()

NebulaBrot

NebulaBrot是一个较新的概念,它结合了多种分形特性来创造星云状的效果。目前没有统一的定义或公式,因此下面的代码只是一个示例,展示了如何组合不同的分形元素来创造类似的效果。

Python代码示例 (NebulaBrot)

Python

def nebulabrot(x, y, max_iter=8):
    z = complex(x, y)
    for i in range(max_iter):
        z = z*z + z.conjugate()  # Example formula
    return abs(z)

x, y = np.ogrid[-2:1:100j, -1.5:1.5:100j]
vals = np.vectorize(nebulabrot)(x, y)

plt.imshow(vals.T, extent=[-2, 1, -1.5, 1.5], cmap='plasma')
plt.show()

参考文档

这些代码示例仅用于演示目的,可能需要根据具体环境进行调整。对于深入学习和研究这些分形,可以参考以下文档和资源:

请注意,这些代码示例可能需要额外的库和优化才能在实际环境中高效运行。

相关文章
|
开发者 iOS开发
UniApp打包教程:使用HBuilder X和AppUploader完成原生App云打包和上架指南“
UniApp打包教程:使用HBuilder X和AppUploader完成原生App云打包和上架指南“
780 3
|
4月前
|
SQL JSON 测试技术
测试用例生成智能体应用实战(附核心代码)
本文提出企业级测试智能体工程化方案:基于数据库直连+双智能体(SQL/用例生成)+三层校验架构,实现需求自动读取、结构化用例生成、安全校验与批量入库,附核心代码与生产落地实践。
|
小程序 测试技术 uml
电商小程序01需求分析
电商小程序01需求分析
|
Linux C语言 C++
CentOS7安装gcc-5.4.0
CentoOS7 安装gcc
4443 0
CentOS7安装gcc-5.4.0
|
机器学习/深度学习 人工智能 算法
基于YOLOv8的FPS射击类游戏人物识别项目|完整源码数据集+PyQt5界面+完整训练流程+开箱即用!
本项目基于YOLOv8与PyQt5开发,专为FPS射击类游戏人物识别设计,具备高精度、实时检测能力。包含完整训练代码、数据集及图形界面,支持图片、视频、摄像头多模式输入,提供从模型训练到部署的全流程解决方案,开箱即用,适合学术研究与AI工程实践。
基于YOLOv8的FPS射击类游戏人物识别项目|完整源码数据集+PyQt5界面+完整训练流程+开箱即用!
|
人工智能 算法 API
掌握这6个要点,让AI从实验室应用到实际场景
三桥君分享AI产品经理如何将技术落地应用,涵盖找准痛点、数据策略、技术转化、价值体现等关键点,助力AI产品从实验室走向实际场景,实现真正的商业价值。
428 8
|
Linux 索引
linux命令—ls
`ls` 是 Linux 系统中用于列出目录内容的基础命令,功能强大且使用频率极高。它可以帮助用户查看文件、分析磁盘空间及检查权限等。常用选项如 `-l` 显示详细信息,`-a` 包含隐藏文件,`-h` 以易读格式展示大小,`-t` 按修改时间排序等。通过组合选项,可实现复杂需求,如递归遍历目录(`-R`)、显示 inode 号(`-i`)或结合正则过滤特定文件。注意权限限制、特殊字符处理及大规模目录操作可能带来的性能问题。掌握 `ls` 是高效使用 Linux 的关键一步。
|
安全 固态存储 文件存储
Windows 7纯净版重装教程|附微软原版镜像下载+驱动安装避坑技巧
本文详细介绍如何安全、高效地重装电脑系统,解决蓝屏、崩溃等问题。基于10年经验,涵盖从官方镜像获取、启动盘制作、数据备份到系统部署的全流程,并针对老旧机型优化。提供驱动一键安装工具和系统激活指南,确保无后门风险。文中还列出常见问题解决方案及操作禁忌,帮助用户顺利完成系统重装,让电脑重获新生。建议收藏并转发给有需要的朋友,欢迎留言咨询疑难问题。
55746 3
|
人工智能 算法 数据可视化
DBSCAN密度聚类算法(理论+图解+python代码)
DBSCAN密度聚类算法(理论+图解+python代码)
11169 1

热门文章

最新文章