资源预览内容
第1页 / 共18页
第2页 / 共18页
第3页 / 共18页
第4页 / 共18页
第5页 / 共18页
第6页 / 共18页
第7页 / 共18页
第8页 / 共18页
第9页 / 共18页
第10页 / 共18页
亲,该文档总共18页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
请各位关心此源码的朋友帮助将其完善,谢谢,希望大家共同进步。 等值线源码如下: #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,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;i0;k-) c=0; for(k0=k+1;k00 else if(ximy) my=xi; else if(yimz) mz=zi; else if(zi #include #include int CN1,CN2,NP1; /*-CN1,CN2 为网点间距,NP1 为测量点个数-*/ int X0,Y0; /*-X0,Y0 为网格起点坐标-*/ void wzjs(int 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;i0;k-) c=0; for(k0=k+1;k0j1) 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 2: if(flagxi2j20) /*-判断向上走-*/ i0=i2; j0=j2; s1=1; else if(flagxi2j2+10) i0=i2; j0=j2+1; s1=1; else if(flagyi2+1j20) i0=i2+1; j0=j2; s1=0; else return 1; break; case 3: if(flagyi2j2-10) /*-判断向右走-*/ i0=i2; j0=j2-1; s1=0; else if(flagyi2+1j2-10) i0=i2+1; j0=j2-1; s1=0; else if(flagxi2j2-10) i0=i2; j0=j2-1; s1=1; else return 1; break; case 4: if(flagxi2-1j20) /*-判断向下走-*/ i0=i2-1; j0=j2; s1=1; else if(flagxi2-1j2+10) i0=i2-1; j0=j2+1; s1=1; else if(flagyi2-1j20) i0=i2-1; j0=j2; s1=0; else return 1; break; i1=i2; j1=j2; i2=i0; j2=j0; *a1=*a2; *b1=*b2; *a2=(i2+s1*flagxi2j2)*CN1; *b2=(j2+(1-s1)*flagyi2j2)*CN2; if(s1=0) flagyi2j2=-2; /*-用过标志-*/ else flagxi2j2=-2; return 0; /*=*/ /* 绘制等值线 / /*=*/ #include “hmain.h“ float flagxMAXXMAXY,flagyMAXXMAXY; int i1,i2,j1,j2; int zdzz(float *a1,float *b1,float *a2,float *b2); void drawln(float a0,float b0,int n,int m,float ratox,float ratoy,char *item) float a1,b1,a2,b2,sin,xa1000=0,yb1000=0; int k=1; a2=a0; b2=b0; a1=a0+5; b1=b0+5; xa0=a0; yb0=b0; do /*-画线-*/ if(zdzz( break; line(a1/ratox,getmaxy()-b1/ratoy,a2/ratox,getmaxy()-b2/ratoy); xak=a2/ratox; ybk=getmaxy()-b2/ratoy; k+; while(a20 i2=w; j1=-1; j2=0; a0=(i2+flagxw0)*CN1; flagxw0=-2; b0=0; drawln(a0,b0,n,m,ratox,ratoy,item); for(w=0;w0) i1=-1; i2=0; j1=w; j2=w; b0=(j2+flagy0w)*CN2; flagy0w=-2; a0=0; drawln(a0,b0,n,m,ratox,ratoy,item); for(w=0;w0) i1=w; i2=w; j1=m; j2=m; a0=(i2+flagxi2j2)*CN1; b0=m*CN2; flagxi2j2=-2; drawln(a0,b0,n,m,ratox,ratoy,item); for(w=0;w0) i1=n; i2=n; j1=w; j2=w; b0=(j2+flagyi2j2)*CN2; a0=n*CN1; flagyi2j2=-2; drawln(a0,b0,n,m,ratox,ratoy,item); for(w=1;w0) i1=-1; i2=w; j1=w1; j2=w1; a0=i2*CN1; b0=(j2+flagyi2j2)*CN2; flagyi2j2=-2; drawln(a0,b0,n,m,ratox,ratoy,item); /*=标记出网格每边上是否有一高程的等值点=*/ #include “hmain.h“ float flagxMAXXMAXY,flagyMAXXMAXY;/*-等值点标志-*/ void bzdzd(int w,int *n,int *m,float *bb) int i,j; float m1,m2; for(i=0;i0) i1=w; i2=w; j1=-1; j2=0; a0=(i2+flagxw0)*CN1; flagxw0=-2; b0=0; drawln(a0,b0,n,m,ratox,ratoy,item); for(w=0;w0) i1=-1; i2=0; j1=w; j2=w; b0=(j2+flagy0w)*CN2; flagy0w=-2; a0=0; drawln(a0,b0,n,m,ratox,ratoy,item); for(w=0;w0) i1=w; i2=w; j1=m; j2=m; a0=(i2+flagxi2j2)*CN1; b0=m*CN2; flagxi2j2=-2; drawln(a0,b0,n,m,ratox,ratoy,item); for(w=0;w0) i1=n; i2=n; j1=w; j2=w; b0=(j2+flagyi2j2)*CN2; a0=n*CN1; flagyi2j2=-2; drawln(a0,b0,n,m,ratox,ratoy,item); for(w=1;w0) i1=-1; i2=w; j1=w1; j2=w1; a0=i2*CN1; b0=(j2+flagyi2j2)*CN2; flagyi2j2=-2; drawln(a0,b0,n,m,ratox,ratoy,item); /*=等值线追踪=*/ #include “hmain.h“ float flagxMAXXMAXY,flagyMAXXMAXY; int CN1,CN2,i1,i2,j1,j2; int zdzz(float *a1,float *b1,float *a2,float *b2) int flag,i0,j0,s1; if(j2j1) 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 2: if(flagxi2j20) /*-判断向上走-*/ i0=i2; j0=j2; s1=1; else if(flagxi2j2+10) i0=i2; j0=j2+1; s1=1; else if(flagyi2+1j20) i0=i2+1; j0=j2; s1=0; else return 1; break; case 3: if(flagyi2j2-10) /*-判断向右走-*/ i0=i2; j0=j2-1; s1=0; else if(flagyi2+1j2-10) i0=i2+1; j0=j2-1; s1=0; else i
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号