资源简介
采用高斯分布函数生成具有随机性的表面,可用于粗糙面、海平面等随机起伏表面的生成。
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
const int NX=200; //x方向
const int NY=200; //y方向
const int NZ=90; //z方向
const double PI=3.1415926;
double z[NX+1][NY+1]h1[NX+1][NY+1]gauss[NX][NY];
int ijkiijjipjpkpnqlxlyMk1k2;
double kk;
double z1z2z3z4maxzminzsumzminhRaRyRzaminmaxmiusigma;
void init();
void surface();
void surface_a();
void outputsurface1();
void outputsurface2();
void output(int m);
double Normal(double xdouble miudouble sigma);
double AverageRandom(double mindouble max);
double gaussrand(double miudouble sigmadouble mindouble max);
int main()
{
using namespace std;
Ra=1; //平均粗糙度
for (i=0;i<=NX;i++)
for (j=0;j<=NY;j++)
{
gauss[i][j]=gaussrand(01-11);
}
surface();
for (i=0;i<=NX;i++)
for (j=0;j<=NY;j++)
{
h1[i][j]=z[i][j];
}
/* surface_a();
for (i=0;i<=NX;i++)
for (j=0;j<=NY;j++)
{
h1[i][j]+=z[i][j];
}*/
outputsurface1();
outputsurface2();
return 0;
}
//==============================================生成表面形貌
void surface()
{
srand(unsigned(time(0)));
maxz=0;
minz=0;
sumz=0;
lx=10; //凸点距离
ly=10;
for (i=0;i<=NX;i+=lx)
for (j=0;j<=NY;j+=ly)
{
z[i][j]=gauss[i][j];
if ((i==0) || (i==NX))
z[i][j]=0;
if (i==0 && j==0)
z[i][j]=0;
if (i==0 && j==NY)
z[i][j]=0;
if (i==NX && j==0)
z[i][j]=0;
if (i==NX && j==NY)
z[i][j]=0;
sumz+=fabs(z[i][j]);
}
sumz/=int(NX/lx)*int(NY/ly);
a=Ra/sumz;
for (i=0;i<=NX;i+=lx)
for (j=0;j<=NY;j+=ly)
{
z[i][j]*=a;
}
/* for (i=0;i for (j=0;j {
z1=z[i][j]z2=z[i+lx][j]z3=z[i][j+ly]z4=z[i+lx][j+ly];
for (ii=i;ii for (jj=j;jj {
z[ii][jj]=(z1*(i+lx-ii)*(j+ly-jj)+z2*(ii-i)*(j+ly-jj)+z3*(i+lx-ii)*(jj-j)+z4*(ii-i)*(jj-j))/lx/ly;
}
} */
for (i=0;i for (j=0;j {
z1=z[i][j]z2=z[i+lx][j]z3=z[i][j+ly];z4=z[i+lx][j+ly];
for (ii=i;ii<=i+lx;ii++)
for (jj=j;jj<=j+ly;jj++)
{
z[ii][jj]=z1+3*(z2-z1)*(ii-i)*(ii-i)/lx/lx+3*(z3-z1)*(jj-j)*(jj-j)/ly/ly
+9*(z4+z1-z2-z3)*(ii-i)*(ii-i)*(jj-j)*(jj-j)/lx/lx/ly/ly
+2*(z1-z3)*(jj-j)*(jj-j)*(jj-j)/ly/ly/ly+2*(z1-z2)*(ii-i)*(ii-i)*(ii-i)/lx/lx/lx
+6*(z2+z3-z4-z1)*(ii-i)*(ii-i)*(ii-i)*(jj-j)*(jj-j)/lx/lx/lx/ly/ly
+6*(z2+z3-z4-z1)*(ii-i)*(ii-i)*(jj-j)*(jj-j)*(jj-j)/lx/lx/ly/ly/ly
+4*(z4+z1-z2-z3)*(ii-i)*(ii-i)*(ii-i)*(jj-j)*(jj-j)*(jj-j)/lx/lx/lx/ly/ly/ly;
}
}//插值结束
}
/*void surface_a()
{
maxz=0;
minz=0;
sumz=0;
lx=40; //凸点距离
ly=6;
for (i=0;i<=NX;i+=lx)
for (j=0;j<=NY;j+=ly)
{
z[i][j]=gauss[i][j];
if (i==0 && j==0)
z[i][j]=0;
if (i==0 && j==NY)
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 5960 2014-02-21 15:58 random_surface\Debug\BuildLog.htm
文件 503808 2014-02-21 15:58 random_surface\Debug\ldf.exe
文件 406 2014-02-19 17:30 random_surface\Debug\ldf.exe.em
文件 472 2014-02-19 17:30 random_surface\Debug\ldf.exe.em
文件 381 2014-02-21 15:58 random_surface\Debug\ldf.exe.intermediate.manifest
文件 836704 2014-02-21 15:58 random_surface\Debug\ldf.ilk
文件 482625 2014-02-21 15:58 random_surface\Debug\ldf.obj
文件 2731008 2014-02-21 15:58 random_surface\Debug\ldf.pdb
文件 65 2014-02-21 15:58 random_surface\Debug\mt.dep
文件 82944 2013-11-20 16:14 random_surface\Debug\vc60.idb
文件 110592 2013-11-20 16:14 random_surface\Debug\vc60.pdb
文件 191488 2014-02-21 15:58 random_surface\Debug\vc90.idb
文件 200704 2014-02-21 15:58 random_surface\Debug\vc90.pdb
文件 6640 2014-02-21 15:58 random_surface\ldf.cpp
文件 3705 2013-05-16 12:42 random_surface\ldf.dsp
文件 529 2013-05-16 12:49 random_surface\ldf.dsw
文件 1993728 2014-02-21 16:10 random_surface\ldf.ncb
文件 53760 2014-02-19 17:16 random_surface\ldf.opt
文件 1116 2013-11-20 16:14 random_surface\ldf.plg
文件 871 2014-02-20 20:19 random_surface\ldf.sln
..A..H. 11264 2014-02-21 16:10 random_surface\ldf.suo
文件 4805 2014-02-19 17:30 random_surface\ldf.vcproj
文件 1411 2014-02-21 16:10 random_surface\ldf.vcproj.user-PC.user.user
文件 164039 2014-02-21 15:58 random_surface\surface1.dat
文件 123842 2014-02-21 15:58 random_surface\surface2.dat
文件 166271 2013-06-13 18:30 random_surface\surface_100_100_10.dat
文件 166309 2013-06-13 18:35 random_surface\surface_100_100_5.dat
文件 247607 2013-06-13 18:59 random_surface\surface_120_120_10.dat
文件 247504 2013-06-13 19:00 random_surface\surface_120_120_12.dat
文件 249276 2013-06-13 19:00 random_surface\surface_120_120_15.dat
............此处省略10个文件信息
评论
共有 条评论