海岸线
分形之海岸线
分形理论是当今世界十分风靡和活跃的新理论、新学科。分形的概念是美籍数学家曼德布罗特(B.B.Mandelbort)首先提出的。1967年他在美国权威的《科学》杂志上发表了题为《英国的海岸线有多长?》的著名论文。海岸线作为曲线,其特征是极不规则、极不光滑的,呈现极其蜿蜒复杂的变化。我们不能从形状和结构上区分这部分海岸与那部分海岸有什么本质的不同,这种几乎同样程度的不规则性和复杂性,说明海岸线在形貌上是自相似的,也就是局部形态和整体形态的相似。在没有建筑物或其他东西作为参照物时,在空中拍摄的100公里长的海岸线与放大了的10公里长海岸线的两张照片,看上去会十分相似。事实上,具有自相似性的形态广泛存在于自然界中,如:连绵的山川、飘浮的云朵、岩石的断裂口、布朗粒子运动的轨迹、树冠、花菜、大脑皮层……曼德布罗特把这些部分与整体以某种方式相似的形体称为分形(fractal)。1975年,他创立了分形几何学(fractalgeometry)。在此基础上,形成了研究分形性质及其应用的科学,称为分形理论(fractaltheory)。
在这一节中,将展示一个海岸线的分形图形。
结果演示:
代码:
#include iostream
#include cstdlib
#include ctime
#include ctype.h
#include vector
#include math.h
#include iomanip
#include graphics.h
#include conio.h
#include windows.h
#include fstream
#include string
using namespace std;
MOUSEMSG m;
HWND hOut;
struct Node
{
double posx1,posy1;
double posx2,posy2;
int num,lifenum;
};
struct Node1
{
double posx1,posy1;
double posx2,posy2;
int num,lifenum;
};
Node box[100000];
Node1 eat[100000];
int flag;
int exit1,exit2,exit3;
double R;
double pi;
void draw()
{
int i,j,k;
double x,y;
cleardevice();
setlinestyle(PS_SOLID,1);
setlinecolor(BLACK);
for(i=0;iflag;i++){
line(box[i].posx1,box[i].posy1,box[i].posx2,box[i].posy2);
}
FlushBatchDraw();
}
void ff()
{
int i,n;
double k,j;
n=0;
R=R/4.0;
for(i=0;iflag;i++){
k=atan((box[i].posy2-box[i].posy1)/(box[i].posx2-box[i].posx1))*180.0/pi;
if((box[i].posx2-box[i].posx1)0)k+=180;
eat[n].posx1=box[i].posx1;
eat[n].posy1=box[i].posy1;
eat[n].posx2=eat[n].posx1+R*cos(k/180*pi);
eat[n].posy2=eat[n].posy1+R*sin(k/180*pi);
k-=60;
eat[n+1].posx1=eat[n].posx2;
eat[n+1].posy1=eat[n].posy2;
eat[n+1].posx2=eat[n+1].posx1+R*cos(k/180*pi);
eat[n+1].posy2=eat[n+1].posy1+R*sin(k/180*pi);
k+=120;
eat[n+2].posx1=eat[n+1].posx2;
eat[n+2].posy1=eat[n+1].posy2;
eat[n+2].posx2=eat[n+2].posx1+R*cos(k/180*pi);
eat[n+2].posy2=eat[n+2].posy1+R*sin(k/180*pi);
eat[n+3].posx1=eat[n+2].posx2;
eat[n+3].posy1=eat[n+2].posy2;
eat[n+3].posx2=eat[n+3].posx1+R*cos(k/180*pi);
eat[n+3].posy2=eat[n+3].posy1+R*sin(k/180*pi);
k-=120;
eat[n+4].posx1=eat[n+3].posx2;
eat[n+4].posy1=eat[n+3].posy2;
eat[n+4].posx2=eat[n+4].posx1+R*cos(k/180*pi);
eat[n+4].posy2=eat[n+4].posy1+R*sin(k/180*pi);
k+=60;
eat[n+5].posx1=eat[n+4].posx2;
eat[n+5].posy1=eat[n+4].posy2;
eat[n+5].posx2=eat[n+5].posx1+R*cos(k/180*pi);
eat[n+5].posy2=eat[n+5].posy1+R*sin(k/180*pi);
n+=6;
}
for(i=0;in;i++){
box[i].posx1=eat[i].posx1;
box[i].posy1=eat[i].posy1;
box[i].posx2=eat[i].posx2;
box[i].posy2=eat[i].posy2;
}
flag=n;
coutflagendl;
}
void move()
{
int i,j,k;
draw();
Sleep(100);
_getch();
ff();
}
void initialization()
{
int i,j,k;
hOut=initgraph(500, 500,SHOWCONSOLE);
exit1=0;
flag=1;
pi=3.141592653;
setbkcolor(WHITE);
setlinecolor(BLACK);
settextcolor(BLACK);
box[0].posx1=100;box[0].posy1=250;box[0].posx2=400;box[0].posy2=250;
R=300;
}
void carry()
{
initialization();
BeginBatchDraw();
while(exit1==0){
move();
}
closegraph();
EndBatchDraw();
}
int main()
{
carry();
}
演示视频:
海岸线是什么
海岸线是海洋与陆地的分界线,更确切的定义是海水到达陆地的极限位置的连线。随潮水涨落而变动。由于受到潮汐作用以及风暴潮等影响,海水有涨有落,海面时高时低,这条海洋与陆地的分界线时刻处于变化之中。因此,实际的海岸线应该是高低潮间无数条海陆分界线的集合,它在空间上是一条带,而不是一条地理位置固定的线。
我国大陆海岸线长达多少千米,我国海岸线有多长
18400多千米。
东部和南部大陆海岸线长18400多公里,岛屿岸线14000多公里,内海和边海的水域面积约470多万平方公里。
海域分布有大小岛屿7600个,其中台湾岛最大,约为35989.76平方公里。陆上国界线长达20000多公里,陆地同14国接壤,与6国海上相邻。
|海岸线
我国大陆海岸线长达多少千米 我国海岸线有多长 海岸线 海岸线