avatar
O*d
1
上班有点小闲,无聊之时,突然心血来潮,写了一个小小的程序,描绘
Mandelbrot Set. 纯粹的数学。贴来两张照片。
avatar
k*f
2
当时用586计算这种图象,感觉比386强太多了
一个图片就几秒钟算完了

【在 O*******d 的大作中提到】
: 上班有点小闲,无聊之时,突然心血来潮,写了一个小小的程序,描绘
: Mandelbrot Set. 纯粹的数学。贴来两张照片。

avatar
O*d
3
用OpenGL画的图,主要用OpenGL的alpha blending来产生明暗。颜色是随机的,每次运
行都不一样。函数如下,但要有一些setup.
void drawMandlebrot()
{
double zx, zy, zx1, m;
GLfloat *buffer;
if(sizeChanged)
{
buffer = new GLfloat [currentWidth * currentHeight * 4];

if(buffer)
{

int halfWidth = currentWidth / 2;
int halfHeight = currentHeight / 2;
double x, y;
float alpha;
double fx = ZOOM / (double)halfWidth;
avatar
O*d
4
1500x1000的图片大约4到7秒完成。

【在 k****f 的大作中提到】
: 当时用586计算这种图象,感觉比386强太多了
: 一个图片就几秒钟算完了

avatar
O*d
5
上边函数用到的几个参数
const unsigned int WIDTH = 1500U;
const unsigned int HEIGHT = 1000U;
const double RATIO = (double)HEIGHT /(double)WIDTH;
/* zoom is calibrated to width 1000 */
const double ZOOM = 0.000000001 * (double)WIDTH / 1000.0 ;
const double ZOOM_Y = ZOOM * RATIO;
const int MAX_ITER = 1800;
/* x and y center of the image */
double xOffset = -0.713;
double yOffset = 0.34;
avatar
k*l
6
强阿。。。

上班有点小闲,无聊之时,突然心血来潮,写了一个小小的程序,描绘
Mandelbrot Set. 纯粹的数学。贴来两张照片。

【在 O*******d 的大作中提到】
: 上班有点小闲,无聊之时,突然心血来潮,写了一个小小的程序,描绘
: Mandelbrot Set. 纯粹的数学。贴来两张照片。

avatar
l*c
7
Consider anti-aliasing please, haha.

【在 O*******d 的大作中提到】
: 1500x1000的图片大约4到7秒完成。
avatar
O*d
8
不是很难. 画一个点时,同时把一圈八个点按着距离也加点颜色. 相当于做了一个卷积
convolution

【在 l*****c 的大作中提到】
: Consider anti-aliasing please, haha.
avatar
O*d
9
计算时间大部分都花在 for(k = 0; k < MAX_ITER; ++k)
avatar
g*z
10
Zan!

【在 O*******d 的大作中提到】
: 上班有点小闲,无聊之时,突然心血来潮,写了一个小小的程序,描绘
: Mandelbrot Set. 纯粹的数学。贴来两张照片。

avatar
O*d
11
放大倍数越高,计算时间需要越长。因为Mandelbrot的边缘处于发散和收敛的临界,放
大倍数越高,计算时要求的iteration次数就要越多才能比较精确确定是发散还是收敛
。 现在基本上还没有理论解决怎样不用反复计算的方法来确定一个点是不是在
Mandelbrot set之内。
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。