计算机测绘程序设计实验报告东华理工Word文档格式.docx

上传人:b****6 文档编号:19686252 上传时间:2023-01-08 格式:DOCX 页数:38 大小:439.66KB
下载 相关 举报
计算机测绘程序设计实验报告东华理工Word文档格式.docx_第1页
第1页 / 共38页
计算机测绘程序设计实验报告东华理工Word文档格式.docx_第2页
第2页 / 共38页
计算机测绘程序设计实验报告东华理工Word文档格式.docx_第3页
第3页 / 共38页
计算机测绘程序设计实验报告东华理工Word文档格式.docx_第4页
第4页 / 共38页
计算机测绘程序设计实验报告东华理工Word文档格式.docx_第5页
第5页 / 共38页
点击查看更多>>
下载资源
资源描述

计算机测绘程序设计实验报告东华理工Word文档格式.docx

《计算机测绘程序设计实验报告东华理工Word文档格式.docx》由会员分享,可在线阅读,更多相关《计算机测绘程序设计实验报告东华理工Word文档格式.docx(38页珍藏版)》请在冰豆网上搜索。

计算机测绘程序设计实验报告东华理工Word文档格式.docx

清空

Label1

角度:

Label2

弧度:

Text1

txt_jd

无定义

Text2

txt_hd

(3)程序代码

PrivateSubCmd_jh_Click()

Constpi#=3.14159265358979'

定义常量pi

Dimd%,f%,m#,fh%,jdzh%

jd=txt_jd.Text

fh=Sgn(jd)'

获取输入角度的正负号

jd=Abs(jd)'

取输入角度的绝对值

d=Int(jd)'

提取度

f=Int((jd-d)*100)'

提取分

m=((jd-d)*100-f)*100'

提取秒

jdzh=(d+f/60+m/3600)'

得到角度总和,单位为度

hd=Format(jd*pi/180*fh,"

0.000000"

)'

保留6位小数

txt_hd.Text=hd

EndSub

PrivateSubCmd_hj_Click()

Dimd%,f%,m#,fh%

hd=txt_hd.Text

fh=Sgn(hd)'

获取输入弧度的正负号

jdzh=Abs(hd)*180/pi'

将弧度转换为角度,单位为度

d=Int(jdzh)'

f=Int((jdzh-d)*60)'

m=((jdzh-d)*60-f)*60'

jd=Format((d+f/100+m/10000)*fh,"

0.0000"

得到度.分秒并保留四位小数

txt_jd.Text=jd

PrivateSubCmd_qk_Click()

txt_jd.Text="

"

txt_hd.Text="

(4)运行结果

实验二矩阵的加、减、乘、转置、求逆

根据矩阵的运算方法及规则,只有当两个矩阵是同型矩阵时,这两个矩阵才能进行加法和减法运算。

只有当第一个矩阵(左矩阵)的列数等于第二个矩阵(右矩阵)的行数时,两个矩阵才能相乘。

矩阵的转置是行变列,列变行。

矩阵的求逆:

首先提取矩阵中的数据,再利用调用函数完成矩阵运算。

frm_jzys

矩阵运算(彭思强)

Cmd_jia

A+B

Cmd_jian

A-B

Cmd_cheng

A*B

Command4

Cmd_zhuanzhi

AT

Command5

Cmd_qiuni

A-1

Command6

Cmd_qc

清除

A

B

Label3

C

Txt_a

Txt_b

Text3

Txt_c

OptionBase1'

数组从1开始

DimA()AsDouble

DimB()AsDouble

DimC()AsDouble

'

矩阵相加运算提取数据

PrivateSubCmd_jia_Click()

DimiAsInteger

DimjAsInteger

Dimm1AsInteger

Dimn1AsInteger

Dimm2AsInteger

Dimn2AsInteger

Dimmystring()AsString

Diml()AsString

'

提取矩阵A的数据

mystring()=Split(Txt_a.Text,vbCrLf)

m1=UBound(mystring,1)-LBound(mystring,1)+1'

获取行数

l()=Split(mystring(0),"

"

第一行数据

n1=UBound(l,1)-LBound(l,1)+1'

获取列数

ReDimA(m1,n1)'

重新定义矩阵A

Fori=1Tom1

l()=Split(mystring(i-1),"

n1=UBound(l,1)-LBound(l,1)+1'

Forj=1Ton1

A(i,j)=l(j-1)

Nextj

Nexti

提取矩阵B的数据

mystring()=Split(Txt_b.Text,vbCrLf)

m2=UBound(mystring,1)-LBound(mystring,1)+1'

n2=UBound(l,1)-LBound(l,1)+1'

ReDimB(m2,n2)'

重新定义矩阵B

Fori=1Tom2

n2=UBound(l,1)-LBound(l,1)+1'

Forj=1Ton2

B(i,j)=l(j-1)'

获取矩阵B

ReDimC(m1,n1)'

重新定义矩阵C

Callmadd(A,B,C)'

调用矩阵相加的函数

Txt_c.Text="

Txt_c.Text=Txt_c.Text+Str(C(i,j))+"

Txt_c.Text=Txt_c.Text+vbCrLf

矩阵相减运算提取数据

PrivateSubCmd_jian_Click()

A(i,j)=l(j-1)'

获取矩阵A

Callmcut(A,B,C)'

调用矩阵相减的函数

矩阵相乘运算提取数据

PrivateSubCmd_cheng_Click()

ReDimC(m1,n2)'

Callmmul(A,B,C)'

调用矩阵相乘的函数

矩阵转置提取数据

PrivateSubCmd_zhuanzhi_Click()

DimAT()AsDouble

ReDimAT(n1,m1)'

重新定义矩阵AT

Callmtrans(A,AT)'

调用矩阵转置的函数

Fori=1Ton1

Forj=1Tom1

Txt_c.Text=Txt_c.Text+Str(AT(i,j))+"

Nexti

矩阵求逆提取数据

PrivateSubCmd_qiuni_Click()

重新定义

CallMRinv(A)'

调用矩阵求逆的函数

Txt_c.Text=Txt_c.Text+Str(A(i,j))+"

Cmd_qc_Click()事件完成数据的清除

PrivateSubCmd_qc_Click()

Txt_a.Text="

Txt_b.Text="

Submadd(mtxA()AsDouble,mtxB()AsDouble,mtxC()AsDouble)'

矩阵相加

DimiAsInteger,jAsInteger

DimmAsInteger,nAsInteger

m=UBound(mtxA,1)-LBound(mtxA,1)+1

n=UBound(mtxA,2)-LBound(mtxA,2)+1

Fori=1Tom

Forj=1Ton

mtxC(i,j)=mtxA(i,j)+mtxB(i,j)

Submcut(mtxA()AsDouble,mtxB()AsDouble,mtxC()AsDouble)'

矩阵相减

mtxC(i,j)=mtxA(i,j)-mtxB(i,j)

Submmul(mtxA()AsDouble,mtxB()AsDouble,mtxC()AsDouble)'

矩阵相乘

DimlAsInteger,KAsInteger

l=UBound(mtxB,2)-LBound(mtxB,2)+1

Forj=1Tol

ForK=1Ton

mtxC(i,j)=mtxC(i,j)+mtxA(i,K)*mtxB(K,j)

NextK

Submtrans(mtxA()AsDouble,mtxAT()AsDouble)'

矩阵转置

Fori=1Ton

Forj=1Tom

mtxAT(i,j)=mtxA(j,i)

FunctionMRinv(mtxA()AsDouble)AsBoolean'

矩阵求逆

DimnAsInteger

n=UBound(mtxA,1)-LBound(mtxA,1)+1

ReDimnIs(0Ton)AsInteger,nJs(0Ton)AsInteger

DimiAsInteger,jAsInteger,KAsInteger

DimDAsDouble,pAsDouble

ForK=1Ton

D=0#

Fori=KTon

Forj=KTon

p=Abs(mtxA(i,j))

If(p>

D)Then

D=p

nIs(K)=i

nJs(K)=j

EndIf

Nextj

If(D+1#=1#)Then

MRinv=False

ExitFunction

EndIf

If(nIs(K)<

>

K)Then

p=mtxA(K,j)

mtxA(K,j)=mtxA(nIs(K),j)

mtxA(nIs(K),j)=p

If(nJs(K)<

p=mtxA(i,K)

mtxA(i,K)=mtxA(i,nJs(K))

mtxA(i,nJs(K))=p

mtxA(K,K)=1#/mtxA(K,K)

Forj=1Ton

If(j<

K)ThenmtxA(K,j)=mtxA(K,j)*mtxA(K,K)

Fori=1Ton

If(i<

K)ThenmtxA(i,j)=mtxA(i,j)-mtxA(i,K)*mtxA(K,j)

K)ThenmtxA(i,K)=-mtxA(i,K)*mtxA(K,K)

NextK

ForK=nTo1Step-1

If(nJs(K)<

mtxA(K,j)=mtxA(nJs(K),j)

mtxA(nJs(K),j)=p

mtxA(i,K)=mtxA(i,nIs(K))

mtxA(i,nIs(K))=p

MRinv=True

EndFunction

实验三坐标正反算

1.坐标正算

已知一点坐标A(XA,YA)、水平距离DAB和坐标方位角αAB,求另一点坐标B(XB,YB)。

利用角度与弧度的相互转换函数,根据坐标正算公式XB=XA+DAB*Cos(αAB),YB=YA+DAB*Sin(αAB)计算出B点坐标。

窗体、框架等控件属性设置

frm_zbzs

坐标正算(彭思强)

Cmd_js

计算

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 商业计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1