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()

参考文档

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

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

相关文章
|
1月前
|
数据可视化 Java 数据库
回顾 2023,NebulaGraph 的这一年的变化
在整体上,从 v3.3.0 到 v3.6.0,NebulaGraph 的稳定性有了明显的提升;而最新的发行版 v3.6.0 版本,在性能上,针对图上常用的路径查询、多跳查询上,均有不同程度的性能提升,最高提升了 6 倍。
53 0
回顾 2023,NebulaGraph 的这一年的变化
|
11月前
架构学习——ER图
架构学习——ER图
166 0
|
7月前
|
SQL 自然语言处理 关系型数据库
从真实案例出发,全方位解读 NebulaGraph 中的执行计划
当我们遇到语句执行慢问题时,也许你该读一读这条语句的执行计划,看看它卡在哪里。读完执行计划之后,针对性优化相关耗时长的算子。
49 0
|
10月前
|
存储 NoSQL 算法
使用秘籍|如何实现图数据库 NebulaGraph 的高效建模、快速导入、性能优化
NebulaGraph 技术社区用户的实践优化心得集大成者,从数据建模开始,解决数据膨胀问题,再到软硬皆施搞定数据导入的速率,到最后的查询语句优化。一站式搞定数据库的性能问题。
551 0
使用秘籍|如何实现图数据库 NebulaGraph 的高效建模、快速导入、性能优化
|
9月前
|
JavaScript 前端开发 Oracle
ES6:基础使用,积累
ES6:基础使用,积累
31 0
|
9月前
|
弹性计算 监控 NoSQL
数据库重构之路,以 OrientDB 到 NebulaGraph 为例
如果你想尝鲜图数据库 NebulaGraph,记得去 GitHub 下载、使用、(^з^)-☆ star 它 -> GitHub;和其他的 NebulaGraph 用户一起交流图数据库技术和应用技能,留下「你的名片」一起玩耍呀~
64 0
|
9月前
|
弹性计算 监控 NoSQL
图数据库系统重构之路:从OrientDB迁移到NebulaGraph 真实案例分享
图数据库系统重构之路:从OrientDB迁移到NebulaGraph 真实案例分享
112 0
|
存储 数据可视化 算法
揭秘可视化图探索工具 NebulaGraph Explore 是如何实现图计算的
在可视化图探索工具 NebulaGraph Explorer 3.1.0 版本中加入了图计算工作流功能,针对 NebulaGraph 提供了图计算的能力,同时可以利用工作流的 nGQL 运行能力支持简单的数据读取,过滤及写入等数据处理功能。 本文将简单分享下 NebulaGraph Explorer 中集成图计算的基本实现原理。
424 0
|
SQL 缓存 分布式计算
从实测出发,掌握 NebulaGraph Exchange 性能最大化的秘密
NebulaGraph Exchange 是图数据库 NebulaGraph 的一款数据处理工具,本篇内容从实测出发,教你如何用上、用好这个数据产品。
103 0