我对编程分形没有任何经验.当然,我已经看过着名的Mandelbrot图像等.
你能为我提供简单的分形算法吗?
编程语言并不重要,但我最熟悉的是actionscript,C#,Java.
我知道,如果我谷歌分形,我得到了很多(复杂的)信息,但我想从一个简单的算法开始并使用它.
也欢迎提出改进基本算法的建议,比如如何用那些可爱的颜色制作它们.
代码高尔夫的常用规则.这是python中的一个实现作为示例
from PIL import Image
im = Image.new("RGB", (300,300))
for i in xrange(300):
print "i = ",i
for j in xrange(300):
x0 = float( 4.0*float(i-150)/300.0 -1.0)
y0 = float( 4.0*float(j-150)/300.0 +0.0)
x=0.0
y=0.0
iteration = 0
max_iteration = 1000
while (x*x + y*y <= 4.0 and iteration < max_iteration):
xtemp = x*x - y*y + x0
y = 2.0*x*y+y0
x = xtemp
iteration += 1
if iteration == max_iteration:
value = 255
else:
value = iteration*10 % 255
print value …Run Code Online (Sandbox Code Playgroud) 分形对我来说一直是个谜.
在各种编程问题领域中,分形有哪些实际用途(除了渲染到漂亮的图像之外)?请不要只列出使用它们的区域.我对特定的算法感兴趣,以及如何将分形与这些算法一起用来在实践中解决某些问题.请至少给出算法的简短描述.
我目前正在编写一个程序来生成真正巨大的(65536x65536像素及以上)Mandelbrot图像,我想设计一种能够正义的光谱和着色方案.在维基百科特色的Mandelbrot图像似乎是一个很好的例子,调色板尤其是如何保持在序列中的所有缩放级别变化.不过,我不确定它是在旋转调色板还是做其他一些技巧来实现这一点.
我熟悉mandelbrot集的平滑着色算法,所以我可以避免使用条带,但我仍然需要一种方法来为此算法的输出值指定颜色.
我正在生成的图像是金字塔形的(例如,一系列图像,每个图像的尺寸都是前一个图像的一半),所以我可以使用某种旋转调色板,只要调色板之间的变化即可缩放级别不是太明显.
我的问题很难解释.
我想创建一个包含嵌套for循环的函数,
其数量与传递给函数的参数成比例.
这是一个假设的例子:
Function(2)
Run Code Online (Sandbox Code Playgroud)
......会涉及......
for x in range (y):
for x in range (y):
do_whatever()
Run Code Online (Sandbox Code Playgroud)
另一个例子...
Function(6)
Run Code Online (Sandbox Code Playgroud)
......会涉及......
for x in range (y):
for x in range (y):
for x in range (y):
for x in range (y):
for x in range (y):
for x in range (y):
whatever()
Run Code Online (Sandbox Code Playgroud)
for循环(y)的变量实际上并未在嵌套代码中使用.
你的第一个想法可能是创建一个for循环,其范围是数字参数的功能......
这不能正常工作,因为产品将是巨大的.我需要实例,其中有8个嵌套for循环.
该产品对于for循环中的范围而言太大.
还有其他参数需要传递给函数,但我可以自己处理.
这是代码(它创建了Snowflake Fractal)
from turtle import *
length = 800
speed(0)
def Mini(length):
for x in range (3):
forward(length)
right(60)
penup()
setpos(-500, 0)
pendown()
choice …Run Code Online (Sandbox Code Playgroud) 我有一个应用程序,其中Hilbert R-Tree (维基百科) (citeseer)似乎是一个合适的数据结构.具体而言,它需要对将经历大量更新的数据集进行合理快速的空间查询.
但是,据我所知,这个数据结构的算法描述都没有提到如何实际计算必要的希尔伯特值 ; 这是希尔伯特曲线到该点的距离.
那么有关如何计算这个的任何建议?
我正在试图拆开并去除这个产生这个标题的python代码:
_ = (
255,
lambda
V ,B,c
:c and Y(V*V+B,B, c
-1)if(abs(V)<6)else
( 2+c-4*abs(V)**-0.4)/i
) ;v, x=1500,1000;C=range(v*x
);import struct;P=struct.pack;M,\
j ='<QIIHHHH',open('M.bmp','wb').write
for X in j('BM'+P(M,v*x*3+26,26,12,v,x,1,24))or C:
i ,Y=_;j(P('BBB',*(lambda T:(T*80+T**9
*i-950*T **99,T*70-880*T**18+701*
T **9 ,T*i**(1-T**45*2)))(sum(
[ Y(0,(A%3/3.+X%v+(X/v+
A/3/3.-x/2)/1j)*2.5
/x -2.7,i)**2 for \
A in C
[:9]])
/9)
) )
Run Code Online (Sandbox Code Playgroud)
来源:http://preshing.com/20110926/high-resolution-mandelbrot-in-obfuscated-python/
我发现了一个有趣的扭曲的for循环,我不确定它是否只是混淆的一部分,或者如果它实际上有一个功能.中间线:
for X in j('BM'+P(M,v*x*3+26,26,12,v,x,1,24))or C:
最后做什么或做什么?
为清楚起见,我重新编写了如下代码:
import struct
image_name = "M.bmp"
mandlebrot = lambda V,B,c :c and Y(V*V+B,B,c-1) if(abs(V)<6) else (2+c-4*abs(V)**-0.4)/i
y,x = 600,800
pixelrange …Run Code Online (Sandbox Code Playgroud) 我听说可以使用Mandlebrot集的图形来加密数据,并且这种加密算法是量子安全的(与许多常用算法不同,不能用量子计算机来破解).我在Google上查看了更多信息,但我只看到了一些针对更多非技术受众的文章.有没有人有这方面的资料,我可以用它来了解这个有趣的主题?
我正在尝试实施buddhabrot分形.我无法理解一件事:我检查的所有实现都会在图像上选择随机点来计算粒子逃逸的路径.他们为什么这样做呢?为什么不重温所有像素?
随机点的用途是什么?更多的点可以制作更好的图片,所以我认为遍历所有像素会拍出最好的照片 - 我错了吗?
从我的测试数据:
处理400x400图片.如果我全身心投入,那么要迭代160 000像素.
使用随机抽样,图片仅在100万点后开始形成.良好的结果显示大约10亿个随机点,需要数小时才能计算出来.
我试图以xy(2D)坐标的形式生成一个螺旋星系 - 但数学并不是我的强项.
我从螺旋上的一个优秀来源收集了以下信息:
半径r(t)和角度t与最简单的螺旋,阿基米德的螺旋成比例.因此,等式是:
(3)极坐标方程:r(t)= at [a是常数].
由此得出
(2)参数形式:x(t)= at cos(t),y(t)= at sin(t),
(1)中心方程:x²+y²=a²[arc tan(y/x) ]².
这个问题有点触及了星系的产生,但是反应是分散的,而且仍然过于复杂,因为我需要的东西(也就是说,我的数学愚蠢的头脑无法理解它们).
基本上,我需要做的是在PHP~5000次循环螺旋公式,以在513x513 XY网格上生成点.网格的大小和所需的点数可能在将来发生变化.更好的方法是将这些点与螺旋的原点进行权衡,无论是频率还是偏离精确的数学公式,与星系的实际外观类似.
这篇数学论文讨论了一个描述螺旋星系结构的公式.
完全失去我的是如何将数学公式转换为我可以在PHP中循环的东西!