VisualC#编制摄影测量程序

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

利用VisualC#.NET2005编制摄影测量程序目录菜单设计初步类的设计读取和保存文本文件的方法矩阵计算C#主要控件介绍图像坐标测量后方交会程序设计1、菜单设计初步添加MenuStrip对象在菜单中添加名称:’退出this.Dispose();添加新的窗体从菜单进入其他窗体:图像解析formTXJX=new图像解析();formTXJX.Show();2、类的设计:类的属性设计publicclassCpoint{privatestring_id;publicstringid{get{return_id;}set{_id=value;}}privatedouble_xp;publicdoublexp{get{return_xp;}set{_xp=value;}}publicCpoint(){//TODO:在此处添加构造函数逻辑}}2、类的设计:类的方法设计publicclassCimage{privatedouble_xs;publicdoublexs{get{return_xs;}set{_xs=value;}}//求最大未知数publicdoublemax(doublex[])doubles=Math.Abs(x[0]);{for(i=1;i=x.getlength(0)-1;i++){if(Math.Abs(x[i])=s){s=Math.Abs(x[i]);}Returns;}}}2、类的设计:类的实例化Cpointp1=newCpoint;//一个点Cpoint[]p1=newCpoint[num];//多个点p1[1].xt=Convert.ToDouble(split[1]);p1[1].yt=Convert.ToDouble(split[2]);p1[1].zt=Convert.ToDouble(split[3]);p1[1].xp=Convert.ToDouble(split[4]);p1[1].yp=Convert.ToDouble(split[5]);image1.calculation1(0.00001,len1,p1);//共线方程严密计算,10参数3、读文本文件:直接读文本文件StreamReadersr=newStreamReader(Application.StartupPath+\\像片控制点文件.txt);Stringline=sr.ReadLine();k=Convert.ToInt16(line);Cpoint[]p1=newCpoint[num];for(i=0;i=k-1;i++){p1[i]=newCpoint();line=sr.ReadLine();split=line.Split(‘,’);//字符串的方法p1[i].id=split[0];p1[i].xt=Convert.ToDouble(split[1]);p1[i].yt=Convert.ToDouble(split[2]);p1[i].zt=Convert.ToDouble(split[3]);p1[i].xp=Convert.ToDouble(split[4]);p1[i].yp=Convert.ToDouble(split[5]);}sr.Close();3、读文本文件:打开对话框读文件StreamReadersr;Stringline,strfilename;OpenFileDialogopnDlg=newOpenFileDialog();opnDlg.Filter=文本文件(*.txt)|*.txt;opnDlg.Title=打开控制点文件;opnDlg.ShowHelp=true;if(opnDlg.ShowDialog()==DialogResult.OK){strfilename=opnDlg.FileName;sr=newStreamReader(opnDlg.FileName);do{}while(line!=null);sr.Close();}3、将数据保存到文本privateArrayListline=newArrayList();line.Add(comboBox1.Text+,+label1.Text+,+label2.Text);stringpath=Application.StartupPath+\\像片控制点文件.txt;StreamWritersw=File.CreateText(path);//保存数据sw.WriteLine(num.ToString());for(i=0;i=line.Count-1;i++){sw.WriteLine(line[i]);}sw.Close();3、矩阵计算(1)定义:double[]x=newdouble[12];//l参数矩阵变量double[,]b=newdouble[2,12];//误差方程系数矩阵double[]l=newdouble[2];//误差方程式常数项矩阵double[,]n=newdouble[12,12];//法方程系数矩阵double[,]q=newdouble[12,12];//法方程系数逆矩阵double[]w=newdouble[12];//法方程常数项矩阵4、矩阵计算(2)赋值:for(i=0;i=11;i++)//法方程式系数和常数项置零{for(j=0;j=11;j++){n[i,j]=0;}w[i]=0;x[i]=0;}4、矩阵计算(3)矩阵乘法:C=A*Bfor(i=0;i=M-1;i++)//法方程式系数和常数项置零{for(j=0;j=N-1;j++){for(k=0;k=L-1;k++){N[i,j]=N[i,j]+B[K,I]*B[k,j];}}}4、矩阵计算(4)矩阵求逆:publicdouble[,]inv(intm,double[,]n){double[,]q=newdouble[m,m];doubleu;inti;intj;intk;4、矩阵计算//置伴随矩阵for(i=0;i=m-1;i++){for(j=0;j=m-1;j++){if(i==j){q[i,j]=1;}else{q[i,j]=0;}}}4、矩阵计算//'求左下***for(i=0;i=m-2;i++){u=n[i,i];for(j=0;j=m-1;j++){n[i,j]=n[i,j]/u;q[i,j]=q[i,j]/u;}for(k=i+1;k=m-1;k++){u=n[k,i];for(j=0;j=m-1;j++){n[k,j]=n[k,j]-u*n[i,j];q[k,j]=q[k,j]-u*q[i,j];}}}4、矩阵计算(4)矩阵求逆://'求左下u=n[m-1,m-1];n[m-1,m-1]=1;for(j=0;j=m-1;j++){q[m-1,j]=q[m-1,j]/u;}4、矩阵计算//'求右上for(i=m-1;i=0;i--){for(k=i-1;k=0;k--){u=n[k,i];for(j=0;j=m-1;j++){n[k,j]=n[k,j]-u*n[i,j];q[k,j]=q[k,j]-u*q[i,j];}}}returnq;}4、矩阵计算(4)矩阵求逆的调用:publicdouble[,]inv(intm,double[,]n)//求逆函数{returnq;}b=inv(8,a);5、C#主要控件介绍(1)groupBox:对控件进行分组(2)radioButton:单选radioButton1.Checked=true;radioButton1.Checked=false;(3)checkBox:多选radioButton1.Checked5、C#主要控件介绍(4)textBox1:输入和显示数据(5)label1:显示数据(6)用于图像测量的控件pictureBoxpictureBox1.Image=“”;pictureBox1.SizeMode=StretchImage;(7)用对话框打开图像。

1 / 21
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功