144.绘制布朗运动曲线

简介: 144.绘制布朗运动曲线
/* 一维布朗运动曲线 */
/* 本程序利用分形技术画一维的布朗运动曲线 */
/* BC 3.1编译                               */
/* 其中函数initgraph的第三个参数可能需要修改  */
#include "graphics.h"
#include "math.h"
#include "stdlib.h"
#include "conio.h"
#include "time.h"
#include "stdio.h"
#define  MAX_SIZE 1000
#define MAX_LEVEL 9 /* 递归深度*/
double Delta[MAX_LEVEL];
double Array[MAX_SIZE];
double H;
double Sigma=150.0;
double Gauss(void);
void CreateFractalImage(int y1,int y2);
void MiddlePoint(int p1,int p2,int CurrentLevel);
void DrawFractalImage(void);
/*=============================================================*/
main()
{ int GraphDriver=DETECT;
int GraphMode;
int k,mod;
double TempX,TempY,StartX,StartY;
initgraph(&GraphDriver,&GraphMode,"c:\\tc");
/*===============================================================*/
/*Draw fMB curve 递归画一条分形布朗运动曲线*/
/*==============================================================*/
randomize();
setcolor(GREEN);
H=0.3;
settextstyle(TRIPLEX_FONT,HORIZ_DIR,0);
setusercharsize(2,1,1,1);
outtextxy(450,400,"Wait...");
CreateFractalImage(150,150);
DrawFractalImage();
H=0.7;
CreateFractalImage(400,400);
DrawFractalImage();
getch();
closegraph();
return 0;
}
/*===============================================================*/
void CreateFractalImage(int y1,int y2)
{ int N,i;
N=(int)pow(2.0,(double)MAX_LEVEL);
for(i=0;i<MAX_LEVEL;i++)
Delta[i]=Sigma*pow(0.5,i*H)*sqrt(1.0-pow(2.0,2*H-2));
Array[0]=y1;
Array[N]=y2;
MiddlePoint(0,N,0);
}
/*===============================================================*/
/*Recursive procedure 二分法递归*/
/*===============================================================*/
void MiddlePoint(int p1,int p2,int CurrentLevel)
{ int middle;
middle=(p1+p2)/2;
if(CurrentLevel>MAX_LEVEL) return;
if((middle!=p1) && (middle!=p2))
{ Array[middle]=(Array[p1]+Array[p2])/2.0+Delta[CurrentLevel]*Gauss();
MiddlePoint(p1,middle,CurrentLevel+1);
MiddlePoint(middle,p2,CurrentLevel+1);
}
}
/*===============================================================*/
void DrawFractalImage(void)
{ int i,x,step,number;
number=(int) pow(2.0,(double)MAX_LEVEL);
step=getmaxx()/number*3/2;
moveto(0,(int)Array[0]);
for(i=1,x=step;i<number;x+=step,i++) lineto(x,(int)Array[i]);
}
/*==============================================================*/
double Gauss()
{ double g=0.0;
int RANGE=12000;
int COUNT=50;
int m;
for(m=1;m<=COUNT;m++) g+=(double)random(RANGE);
g=g/COUNT/(RANGE-1);
if(random(RANGE)%2) g=-g;
return g;
} 
相关文章
|
XML JavaScript 前端开发
TypeScript 中的“as”语法是什么?
TypeScript 中的“as”语法是什么?
|
缓存 JavaScript 前端开发
SpringBoot——Thymeleaf中的th:inline(内敛文本text、内敛脚本javascript)
SpringBoot——Thymeleaf中的th:inline(内敛文本text、内敛脚本javascript)
2473 0
SpringBoot——Thymeleaf中的th:inline(内敛文本text、内敛脚本javascript)
|
存储 Linux Shell
在Linux中,如何查看当前路径?
在Linux中,如何查看当前路径?
|
存储 SQL 关系型数据库
关系型数据库存储优化
关系型数据库存储优化
264 1
|
存储 缓存 安全
阿里云服务器2核4G、4核8G、8核16G配置活动价格及实例规格选择参考(2024更新)
阿里云服务器2核4G、4核8G、8核16G配置有三十几种实例规格可选,2024年,经济型e、通用算力型u1、计算型c7和计算型c8y实例2核4G、4核8G、8核16G配置的云服务器有优惠,其中,通用算力型u1实例2核4G,5M固定带宽,80G ESSD Entry盘企业用户购买只要199元/1年,另外轻量应用服务器2核4G配置也有优惠,目前价格只要165元/1年。下面是2024年截至目前阿里云服务器2核4G、4核8G、8核16G配置最新活动价格及选择建议参考。
阿里云服务器2核4G、4核8G、8核16G配置活动价格及实例规格选择参考(2024更新)
|
机器学习/深度学习 编解码 算法
【视觉智能开放平台】出品智能修图技术—智能转档算法
RAW转档是专业级摄影后期修图的必备环节,旨在将拍摄的RAW图转化为细节丰富,色彩准确的JPG原片,方便修图师基于转档结果进行更为个性化和精细化的美化操作。由于对效果的精准要求和流程的把控需求,目前修图师主要利用专业软件进行人工转档操作。整个过程耗时又费力,极大降低了后期修图的交付效率。为了赋能修图师,提升他们的工作效率,本文提出了一种基于数据驱动,自动转档的技术方案,以实现人工RAW转档的替代。
1232 2
【视觉智能开放平台】出品智能修图技术—智能转档算法
|
数据库
华夏ERP入门教程
华夏ERP入门教程
|
算法 数据安全/隐私保护
哈夫曼树的详细讲解(手把手教学)
了解哈夫曼树是什么,理解路径和路径长度的概念 学会哈夫曼树的权值计算(WPL) 学会哈夫曼树的构造 理解哈夫曼树编码算法思想
662 1
|
安全 Linux 测试技术
软件工程之维护阶段
软件工程之维护阶段
529 0
|
缓存 Java 数据库
Android 性能优化: 请解释ANR(Application Not Responding)是什么,如何避免它?
Android 性能优化: 请解释ANR(Application Not Responding)是什么,如何避免它?
374 0