ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:20.22KB ,
资源ID:2650003      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-2650003.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(请各位关心此源码的朋友帮助将其完善.docx)为本站会员(b****1)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

请各位关心此源码的朋友帮助将其完善.docx

1、请各位关心此源码的朋友帮助将其完善请各位关心此源码的朋友帮助将其完善,谢谢,希望大家共同进步。 等值线源码如下: #define MAXX 50 #define MAXY 50 #include #include #include #include #include #include /*=用趋势面加权最小二乘法计算网点高程制=*/ #include #include #include int CN1,CN2,NP1; /*-CN1,CN2为网点间距,NP1为测量点个数-*/ int X0,Y0; /*-X0,Y0为网格起点坐标-*/ void wzjs(int n,int m,float*x

2、,float *y,float *z,float *bb) int i,j,k,k0,k1,n0,hh=0; double cnum,x1,x2,y1,y2,xt,yt,xxt,yyt,xyt,zt,A,B,c; double e1010=0,u10=0; for(i=0;i=n;i+) /*-列网(X向)-*/ A=X0+i*CN1; for(j=0;j=m;j+) /*-横网(y向)-*/ B=Y0+j*CN2; for(k=0;k10;k+) uk=0; for(k0=0;k010;k0+) ekk0=0; for(k=0;kNP1;k+) /*-高斯法计算曲面方程值并计算网格点值-*/

3、 hh=0; if(A=*(x+k)&B=*(y+k) *(*(bb+i)+j)=*(z+k); hh=1; break; x1=*(x+k); y1=*(y+k); x2=x1*x1; y2=y1*y1; cnum=(x1-A)*(x1-A)+(y1-B)*(y1-B); cnum=1/cnum; xt=cnum*x1; yt=cnum*y1; xxt=x2*cnum; yyt=y2*cnum; xyt=x1*yt; e11=e11+cnum; e12=e12+xt; e13=e13+yt; e14=e14+xyt; e15=e15+xxt; e16=e16+yyt; e24=e24+x2*

4、yt; e25=e25+x2*xt; e26=e26+y2*xt; e36=e36+y2*yt; e44=e44+x2*yyt; e45=e45+x2*xyt; e46=e46+y2*xyt; e55=e55+x2*xxt; e66=e66+y2*yyt; zt=*(z+k)*cnum; u1=u1+zt; u2=u2+x1*zt; u3=u3+y1*zt; u4=u4+x1*y1*zt; u5=u5+x2*zt; u6=u6+y2*zt; if(hh=1) continue; e22=e15; e23=e14; e33=e16; e34=e26; e35=e24; e56=e44; for(

5、k=1;k6;k+) for(k0=k+1;k07;k0+) ek0k=ekk0; for(k=1;k7;k+) ek7=uk; n0=6; for(k=1;kn0;k+) for(k0=k+1;k0n0+1;k0+) for(k1=k+1;k10;k-) c=0; for(k0=k+1;k00&b20&i2n&j2m); k=k/2; if(xak+1-xak-1)0.3) sin=VERT_DIR; /*-书写等值数字-*/ else if(ybk+1-ybk-1)0.3) sin=VERT_DIR; else sin=(ybk+1-ybk-1)/(xak+1-xak-1); settex

6、tstyle(TRIPLEX_FONT,sin,3); setcolor(WHITE); settextjustify(CENTER_TEXT,CENTER_TEXT); outtextxy(xak,ybk,item); setcolor(GREEN); #include hmain.h /*读入数据*/ void rcvda(char *flname,float *x,float *y,float *z,int *n0); /*划分网格并计算网点*/ void wzjs(int n,int m,float*x,float *y,float *z,float *bb); /*计算等值点*/ v

7、oid bzdzd(int w,int *n,int *m,float *bb); /*绘制等值线*/ void xcln(int n,int m,float ratox,float ratoy,char *item); /*-全局变量-*/ int CN1,CN2,NP1; int X0,Y0,kk,kk1; float flagxMAXXMAXY,flagyMAXXMAXY; /*void mapmode();-图形模式-*/ /*=设置图形模式=*/ void mapmode() int gdriver=DETECT,gmode,errorcode; /*-自动探测-*/ errorco

8、de=registerbgidriver(EGAVGA_driver); if(errorcode0) printf(Graphics error:n%s,grapherrormsg(errorcode); /*-报告注册错误-*/ printf(nPress any key to halt:); getch(); exit(1); initgraph(&gdriver,&gmode,); /*-初始化图形模式-*/ errorcode=graphresult(); if(errorcode!=grOK) printf(Graphics error:n%s,grapherrormsg(erro

9、rcode); printf(nPress any key to halt:); getch(); exit(1); /*=主函数=*/ main() int i,j,n,m,w,pn1,pn2,pn3,n0=0,ccc; float xMAXX,x0MAXX,yMAXY,y0MAXY,zMAXX,ratox,ratoy; float mx,my,mz,nx,ny,nz; char flname12,item10,ch; float bb1MAXXMAXY=0; float *bbMAXX; for(i=0;iMAXX;i+) bbi=&bb1i0; /*-将数组清零-*/ clrscr();

10、 mapmode(); /*-设置图形模式-*/ printf(请输入数据文件名:); scanf(%s,flname); rcvda(flname,x,y,z,&n0); /*-从文件读入数据-*/ mx=nx=x0; my=ny=y0; mz=nz=z0; for(i=0;imx) mx=xi; else if(ximy) my=xi; else if(yimz) mz=zi; else if(zinz) nz=zi; NP1=n0; printf(nmaxx=%.lf minx=%.lfn,mx,nx); printf(nmaxy=%.lf miny=%.lfn,my,ny); prin

11、tf(nmaxz=%.lf minz=%.lfn,mz,nz); printf(n请输入网格间距:); scanf(%d,&CN1); CN2=CN1; n=(int)(mx-nx)/CN1; /*-计算网格数-*/ m=(int)(my-ny)/CN2; X0=(int)(nx/CN1); X0=X0*CN1; /*-计算起始点的坐标-*/ Y0=(int)(ny/CN2); Y0=Y0*CN2; ratox=n*CN1/640.0; ratoy=m*CN2/480.0; /*-x,y方向系数-*/ wzjs(n,m,x,y,z,bb); /*-计算等值点-*/ printf(n请输入最小等

12、值线值:); scanf(%d,&pn1); printf(n请输入最大等值线值:); scanf(%d,&pn2); printf(n请输入等值线间距:); scanf(%d,&pn3); cleardevice(); for(i=0;in0;i+) x0i=(xi-X0)/ratox; /*-计算各点的屏幕坐标-*/ y0i=(yi-Y0)/ratoy; setcolor(RED); circle(x0i,getmaxy()-y0i,3); /*-画一圆示型值点-*/ for(w=pn1;w=pn2;w+=pn3) /*-逐条等值线形成-*/ bzdzd(w,&n,&m,bb); /*-计

13、算等值点-*/ itoa(w,item,10); /*-将整数W转换成字符用于标注-*/ xcln(n,m,ratox,ratoy,item); /*-绘制等值线-*/ getch(); closegraph(); /*=从文件读入数据=*/ #include hmain.h void rcvda(char *flname,float *x,float *y,float *z,int *n0) FILE *stream; if(stream=fopen(flname,rt)=NULL) /*-打开文件-*/ printf(nCant open %s:,flname); getch(); exi

14、t(0); while(!feof(stream) /*-读文件直到结束-*/ fscanf(stream,%f,(x+*n0); fscanf(stream,%f,(y+*n0); fscanf(stream,%f,(z+*n0); *n0=*n0+1; /*-指定区域变动-*/ fclose(stream); /*=用趋势面加权最小二乘法计算网点高程制=*/ #include #include #include int CN1,CN2,NP1; /*-CN1,CN2为网点间距,NP1为测量点个数-*/ int X0,Y0; /*-X0,Y0为网格起点坐标-*/ void wzjs(int

15、n,int m,float*x,float *y,float *z,float *bb) int i,j,k,k0,k1,n0,hh=0; double cnum,x1,x2,y1,y2,xt,yt,xxt,yyt,xyt,zt,A,B,c; double e1010=0,u10=0; for(i=0;i=n;i+) /*-列网(X向)-*/ A=X0+i*CN1; for(j=0;j=m;j+) /*-横网(y向)-*/ B=Y0+j*CN2; for(k=0;k10;k+) uk=0; for(k0=0;k010;k0+) ekk0=0; for(k=0;kNP1;k+) /*-高斯法计算

16、曲面方程值并计算网格点值-*/ hh=0; if(A=*(x+k)&B=*(y+k) *(*(bb+i)+j)=*(z+k); hh=1; break; x1=*(x+k); y1=*(y+k); x2=x1*x1; y2=y1*y1; cnum=(x1-A)*(x1-A)+(y1-B)*(y1-B); cnum=1/cnum; xt=cnum*x1; yt=cnum*y1; xxt=x2*cnum; yyt=y2*cnum; xyt=x1*yt; e11=e11+cnum; e12=e12+xt; e13=e13+yt; e14=e14+xyt; e15=e15+xxt; e16=e16+y

17、yt; e24=e24+x2*yt; e25=e25+x2*xt; e26=e26+y2*xt; e36=e36+y2*yt; e44=e44+x2*yyt; e45=e45+x2*xyt; e46=e46+y2*xyt; e55=e55+x2*xxt; e66=e66+y2*yyt; zt=*(z+k)*cnum; u1=u1+zt; u2=u2+x1*zt; u3=u3+y1*zt; u4=u4+x1*y1*zt; u5=u5+x2*zt; u6=u6+y2*zt; if(hh=1) continue; e22=e15; e23=e14; e33=e16; e34=e26; e35=e24

18、; e56=e44; for(k=1;k6;k+) for(k0=k+1;k07;k0+) ek0k=ekk0; for(k=1;k7;k+) ek7=uk; n0=6; for(k=1;kn0;k+) for(k0=k+1;k0n0+1;k0+) for(k1=k+1;k10;k-) c=0; for(k0=k+1;k0n0+1;k0+) c=c+ekk0*uk0; uk=(ekn0+1-c)/ekk; *(*(bb+i)+j)=u1+A*(u2+B*u4+A*u5)+B*(u3+B*u6); /*=标记出网格每边上是否有一高程的等值点=*/ #include hmain.h float f

19、lagxMAXXMAXY,flagyMAXXMAXY;/*-等值点标志-*/ void bzdzd(int w,int *n,int *m,float *bb) int i,j; float m1,m2; for(i=0;i*n+1;i+) /*-列网(X向)-*/ for(j=0;j*m;j+) m1=w-*(*(bb+i)+j); if(m1=0) m1=-0.01; m2=w-*(*(bb+i)+j+1); if(m2=0) m2=-0.01; if(m1*m20) flagyij=m1/(m1-m2); else flagyij=-2; for(i=0;i*n;i+) /*-横网(y向

20、)-*/ for(j=0;j*m+1;j+) m1=w-*(*(bb+i)+j); if(m1=0) m1=-0.01; m2=w-*(*(bb+i+1)+j); if(m2=0) m2=-0.01; if(m1*m2j1) flag=1; else if(i2i1) flag=2; else if(*b2=j2*CN2) flag=3; else flag=4; switch(flag) case 1: if(flagyi2j20) /*-判断向左走-*/ i0=i2; j0=j2; s1=0; else if(flagyi2+1j20) i0=i2+1; j0=j2; s1=0; else if(flagxi2j2+10) i0=i2; j0=j2+1; s1=1; else return 1; break; case

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2