收藏 分销(赏)

VB平差程序设计复习资料.doc

上传人:xrp****65 文档编号:7437695 上传时间:2025-01-04 格式:DOC 页数:8 大小:71KB 下载积分:10 金币
下载 相关 举报
VB平差程序设计复习资料.doc_第1页
第1页 / 共8页
VB平差程序设计复习资料.doc_第2页
第2页 / 共8页


点击查看更多>>
资源描述
测边交会 Option Compare Database Public DDD_X As Double, DDD_Y As Double '待定点X,Y '已知A、B两点坐标及观测的边长计算待定点坐标,BCJSDDDZB的中文意思是由观测边长计算待定点坐标 Public Sub BCJSDDDZB(xa As Double, ya As Double, xb As Double, yb As Double, L1 As Double, L2 As Double) Dim SAB As Double, L As Double, H As Double, cosAB As Double, sinAB As Double SAB = Sqr((xb - xa) * (xb - xa) + (yb - ya) * (yb - ya)) L = (L1 * L1 + SAB * SAB - L2 * L2) / (2 * SAB) H = Sqr(L1 * L1 - L * L) cosAB = (xb - xa) / SAB sinAB = (yb - ya) / SAB DDD_X = xa + L * cosAB + H * sinAB DDD_Y = ya + L * sinAB - H * cosAB End Sub Private Sub cmd_返回选题界面_Click() DoCmd.OpenForm "选题界面", acNormal, "", "", , acNormal DoCmd.Close acForm, "测边交会" End Sub Private Sub cmd_计算_Click() Dim xa As Double, ya As Double, xb As Double, yb As Double, L1 As Double, L2 As Double If IsNull(Me.txt_Xa) Or IsNull(Me.txt_Ya) Or IsNull(Me.txt_Xb) Or IsNull(Me.txt_Yb) Then MsgBox "请输入完整的坐标数据!!!", vbOKCancel + vbInformation, "提示" End If If IsNull(Me.txt_L1) Or IsNull(Me.txt_L2) Then MsgBox "请输入完整的观测边长数据!!!", vbOKCancel + vbInformation, "提示" End If xa = Me.txt_Xa: ya = Me.txt_Ya xb = Me.txt_Xb: yb = Me.txt_Yb L1 = Me.txt_L1: L2 = Me.txt_L2 If (xb - xa) = 0 And (yb - ya) = 0 Then MsgBox "您选择的是同一个点!", vbOKOnly + vbExclamation, "提示信息" Else Call BCJSDDDZB(xa, ya, xb, yb, L1, L2) Me.txt_DX = Format(DDD_X, "0.000") Me.txt_DY = Format(DDD_Y, "0.000") End If End Sub Private Sub cmd_数据清空_Click() Me.txt_Xa = "": Me.txt_Ya = "" Me.txt_Xb = "": Me.txt_Yb = "" Me.txt_L1 = "": Me.txt_L2 = "" Me.txt_DX = "": Me.txt_DY = "" Me.txt_Xa.SetFocus End Sub Private Sub Form_Load() Me.txt_Xa = "": Me.txt_Ya = "" Me.txt_Xb = "": Me.txt_Yb = "" Me.txt_L1 = "": Me.txt_L2 = "" Me.txt_DX = "": Me.txt_DY = "" Me.txt_Xa.SetFocus End Sub 测角交会 Option Compare Database Const PI = 3.14159265358979 Public DDD_X As Double, DDD_Y As Double '待定点X,Y '角度化弧度 Public Function AngleToRadian(ByVal alfa As Double) As Double alfa = alfa + 0.00000000000001 Dim alfa1 As Double, alfa2 As Double alfa1 = Fix(alfa) + Fix((alfa - Fix(alfa)) * 100#) / 60# alfa2 = (alfa * 100# - Fix(alfa * 100#)) / 36# AngleToRadian = (alfa2 + alfa1) * PI / 180# End Function '已知A、B两点坐标及观测的角度计算待定点坐标,JDJSDDDZB的中文意思是由观测角度计算待定点坐标 Public Sub JDJSDDDZB(xa As Double, ya As Double, xb As Double, yb As Double, JDA As Double, JDB As Double) Dim tanA As Double, tanB As Double JDA = AngleToRadian(JDA) JDB = AngleToRadian(JDB) tanA = Tan(JDA) tanB = Tan(JDB) DDD_X = (xa * tanA + xb * tanB + (yb - ya) * tanA * tanB) / (tanA + tanB) DDD_Y = (ya * tanA + yb * tanB + (xa - xb) * tanA * tanB) / (tanA + tanB) End Sub Private Sub cmd_返回选题界面_Click() DoCmd.OpenForm "选题界面", acNormal, "", "", , acNormal DoCmd.Close acForm, "测角交会" End Sub Private Sub cmd_计算_Click() Dim xa As Double, ya As Double, xb As Double, yb As Double, JDA As Double, JDB As Double If IsNull(Me.txt_Xa) Or IsNull(Me.txt_Ya) Or IsNull(Me.txt_Xb) Or IsNull(Me.txt_Yb) Then MsgBox "请输入完整的坐标数据!!!", vbOKCancel + vbInformation, "提示" End If If IsNull(Me.txt_JDA) Or IsNull(Me.txt_JDB) Then MsgBox "请输入完整的观测角度数据!!!", vbOKCancel + vbInformation, "提示" End If xa = Me.txt_Xa: ya = Me.txt_Ya xb = Me.txt_Xb: yb = Me.txt_Yb JDA = Me.txt_JDA: JDB = Me.txt_JDB If (xb - xa) = 0 And (yb - ya) = 0 Then MsgBox "您选择的是同一个点!", vbOKOnly + vbExclamation, "提示信息" Else Call JDJSDDDZB(xa, ya, xb, yb, JDA, JDB) Me.txt_DX = Format(DDD_X, "0.000") Me.txt_DY = Format(DDD_Y, "0.000") End If End Sub Private Sub cmd_数据清空_Click() Me.txt_Xa = "": Me.txt_Ya = "" Me.txt_Xb = "": Me.txt_Yb = "" Me.txt_JDA = "": Me.txt_JDB = "" Me.txt_DX = "": Me.txt_DY = "" Me.txt_Xa.SetFocus End Sub Private Sub Form_Load() Me.txt_Xa = "": Me.txt_Ya = "" Me.txt_Xb = "": Me.txt_Yb = "" Me.txt_JDA = "": Me.txt_JDB = "" Me.txt_DX = "": Me.txt_DY = "" Me.txt_Xa.SetFocus End Sub 后方交会 Option Compare Database Option Explicit Public XP As Double, YP As Double '后方交会时计算待定点XP、YP Const PI = 3.14159265358979 '角度化弧度 Public Function AngleToRadian(ByVal alfa As Double) As Double alfa = alfa + 0.00000000000001 Dim alfa1 As Double, alfa2 As Double alfa1 = Fix(alfa) + Fix((alfa - Fix(alfa)) * 100#) / 60# alfa2 = (alfa * 100# - Fix(alfa * 100#)) / 36# AngleToRadian = (alfa2 + alfa1) * PI / 180# End Function '已知A、B两点坐标计算方位角,JSFWJ的中文意思是计算方位角 '^_^ 提示此函数处理的坐标是包括带号的 Public Function JSFWJ(xa As Double, ya As Double, xb As Double, yb As Double) As Double '已知A、B两点坐标计算方位角 Dim vx As Double, vy As Double Dim N0 As Integer N0 = Fix(ya / 1000000): ya = ya - N0 * 1000000 N0 = Fix(yb / 1000000): yb = yb - N0 * 1000000 vx = xb - xa: vy = yb - ya '如果A、B两点坐标相同,出现提示对话框 If vx = 0 And vy = 0 Then MsgBox "您选择的是同一个点!", vbOKOnly + vbExclamation, "提示信息" JSFWJ = 999999999# End If '计算方位角的值 If vx = 0 And vy > 0 Then JSFWJ = PI / 2# ElseIf vx = 0 And vy < 0 Then JSFWJ = PI * 3# / 2# ElseIf vy = 0 And vx > 0 Then JSFWJ = 0 ElseIf vy = 0 And vx < 0 Then JSFWJ = PI ElseIf vx > 0 And vy > 0 Then JSFWJ = Atn(vy / vx) ElseIf vx < 0 And vy > 0 Then JSFWJ = Atn(vy / vx) + PI ElseIf vx < 0 And vy < 0 Then JSFWJ = Atn(vy / vx) + PI ElseIf vx > 0 And vy < 0 Then JSFWJ = Atn(vy / vx) + 2 * PI End If End Function 'HFJHJS的中文意思是由后方交会计算 Public Sub HFJHJS(xa As Double, ya As Double, xb As Double, yb As Double, xc As Double, yc As Double, Ra As Double, Rb As Double, Rc As Double) Dim FWJ_AB As Double, FWJ_BA As Double, FWJ_BC As Double, FWJ_CB As Double, FWJ_CA As Double, FWJ_AC As Double '方位角AB、BA、AC、CA、BC、CB Dim JDA As Double, JDB As Double, JDC As Double '角度A、B、C Dim PA As Double, PB As Double, PC As Double '权 Dim Ja As Double, Jb As Double, Jr As Double '三个水平角α、β、γ FWJ_AB = JSFWJ(xa, ya, xb, yb): FWJ_BA = JSFWJ(xb, yb, xa, ya) FWJ_BC = JSFWJ(xb, yb, xc, yc): FWJ_CB = JSFWJ(xc, yc, xb, yb) FWJ_AC = JSFWJ(xa, ya, xc, yc): FWJ_CA = JSFWJ(xc, yc, xa, ya) Ja = Rc - Rb: Jb = Ra - Rc: Jr = Rb - Ra '三个水平角α、β、γ JDA = FWJ_AC - FWJ_AB: JDB = FWJ_BA - FWJ_BC: JDC = FWJ_CB - FWJ_CA PA = (Tan(Ja) * Tan(JDA)) / (Tan(Ja) - Tan(JDA)) PB = (Tan(Jb) * Tan(JDB)) / (Tan(Jb) - Tan(JDB)) PC = (Tan(Jr) * Tan(JDC)) / (Tan(Jr) - Tan(JDC)) XP = (PA * xa + PB * xb + PC * xc) / (PA + PB + PC) YP = (PA * ya + PB * yb + PC * yc) / (PA + PB + PC) End Sub Private Sub cmd_返回选题界面_Click() DoCmd.OpenForm "选题界面", acNormal, "", "", , acNormal DoCmd.Close acForm, "后方交会计算程序" End Sub Private Sub cmd_计算_Click() Dim xa As Double, ya As Double, xb As Double, yb As Double, xc As Double, yc As Double Dim Ra As Double, Rb As Double, Rc As Double If IsNull(Me.txt_Xa) Or IsNull(Me.txt_Ya) Or IsNull(Me.txt_Xb) Or IsNull(Me.txt_Yb) Or IsNull(Me.txt_Xc) Or IsNull(Me.txt_Yc) Or IsNull(Me.txt_Ra) Or IsNull(txt_Rb) Or IsNull(txt_Rc) Then MsgBox "请输入完整数据!!!", vbOKCancel + vbInformation, "提示" Me.txt_Xa.SetFocus Else xa = Me.txt_Xa: ya = Me.txt_Ya xb = Me.txt_Xb: yb = Me.txt_Yb xc = Me.txt_Xc: yc = Me.txt_Yc Ra = Me.txt_Ra: Rb = Me.txt_Rb: Rc = Me.txt_Rc Ra = AngleToRadian(Ra): Rb = AngleToRadian(Rb): Rc = AngleToRadian(Rc) '将原始数据的角度化成弧度进行计算 Call HFJHJS(xa, ya, xb, yb, xc, yc, Ra, Rb, Rc) Me.txt_XP = Format(XP, "0.0000") Me.txt_YP = Format(YP, "0.0000") End If End Sub Private Sub cmd_数据清空_Click() Me.txt_Xa = "": Me.txt_Ya = "" Me.txt_Xb = "": Me.txt_Yb = "" Me.txt_Xc = "": Me.txt_Yc = "" Me.txt_Ra = "": Me.txt_Rb = "": Me.txt_Rc = "" Me.txt_XP = "": Me.txt_YP = "" Me.txt_Xa.SetFocus End Sub Private Sub Form_Load() Me.txt_Xa = "": Me.txt_Ya = "" Me.txt_Xb = "": Me.txt_Yb = "" Me.txt_Xc = "": Me.txt_Yc = "" Me.txt_Ra = "": Me.txt_Rb = "": Me.txt_Rc = "" Me.txt_XP = "": Me.txt_YP = "" Me.txt_Xa.SetFocus End Sub 极坐标方法计算点坐标 Option Compare Database Option Explicit Const PI = 3.14159265358979 '角度化弧度 Public Function AngleToRadian(ByVal alfa As Double) As Double alfa = alfa + 0.00000000000001 Dim alfa1 As Double, alfa2 As Double alfa1 = Fix(alfa) + Fix((alfa - Fix(alfa)) * 100#) / 60# alfa2 = (alfa * 100# - Fix(alfa * 100#)) / 36# AngleToRadian = (alfa2 + alfa1) * PI / 180# End Function Private Sub cmd_返回选题界面_Click() End Sub Private Sub cmd_计算坐标_Click() Dim xa As Double, ya As Double, S As Double, FWJ As Double, xb As Double, yb As Double If IsNull(Me.txt_Xa) Or IsNull(Me.txt_Ya) Or IsNull(Me.txt_S) Or IsNull(Me.txt_FWJ) Then MsgBox "请输入完整数据!!!", vbOKCancel + vbInformation, "提示" Me.txt_Xa.SetFocus Else xa = Me.txt_Xa: ya = Me.txt_Ya S = Me.txt_S: FWJ = Me.txt_FWJ '角度换算成弧度 FWJ = AngleToRadian(FWJ) '计算待定点坐标 xb = xa + S * Cos(FWJ): yb = ya + S * Sin(FWJ) Me.txt_Xb = Format(xb, "0.0000") Me.txt_Yb = Format(yb, "0.0000") End If End Sub Private Sub cmd_数据清空_Click() Me.txt_Xa = "": Me.txt_Ya = "" Me.txt_S = "": Me.txt_FWJ = "" Me.txt_Xb = "" Me.txt_Yb = "" Me.txt_Xa.SetFocus End Sub Private Sub Form_Load() Me.txt_Xa.SetFocus End Sub 中央子午线 Option Compare Database Private Sub cmd_返回选题界面_Click() DoCmd.OpenForm "选题界面", acNormal, "", "", , acNormal DoCmd.Close acForm, "中央子午线计算程序" End Sub Private Sub cmd_计算_Click() Dim DL As Double, N0 As Double, L0 As Double If IsNull(Me.txt_DL) Then MsgBox "请输入完整数据!!!", vbQuestion Exit Sub End If DL = Val(txt_DL) If Frm_分带选择 = 1 Then N0 = Int((DL + 3) / 6# + 0.5) L0 = N0 * 6 - 3 ElseIf Frm_分带选择 = 2 Then N0 = Int(DL / 3# + 0.5) L0 = 3 * N0 End If txt_中央子午线 = L0 End Sub Private Sub cmd_数据清空_Click() txt_DL = "" txt_中央子午线 = "" txt_DL.SetFocus End Sub Private Sub Form_Load() txt_DL = "" txt_中央子午线 = "" Frm_分带选择 = 2 txt_DL.SetFocus End Sub 坐标方位角及距离 Option Compare Database Option Explicit Const PI = 3.14159265358979 '弧度化角度 Public Function RadianToAngle(ByVal alfa As Double) As Double Dim alfa1 As Double, alfa2 As Double alfa = alfa * 180# / PI alfa = alfa + 0.000000000000001 alfa1 = Fix(alfa) + Fix((alfa - Fix(alfa)) * 60#) / 100# alfa2 = (alfa * 60# - Fix(alfa * 60#)) * 0.006 RadianToAngle = alfa2 + alfa1 End Function '已知A、B两点坐标计算方位角,JSFWJ的中文意思是计算方位角 '^_^ 提示此函数处理的坐标是包括带号的 Public Function JSFWJ(xa As Double, ya As Double, xb As Double, yb As Double) As Double '已知A、B两点坐标计算方位角 Dim vx As Double, vy As Double Dim N0 As Integer N0 = Fix(ya / 1000000): ya = ya - N0 * 1000000 N0 = Fix(yb / 1000000): yb = yb - N0 * 1000000 vx = xb - xa: vy = yb - ya '如果A、B两点坐标相同,出现提示对话框 If vx = 0 And vy = 0 Then MsgBox "您选择的是同一个点!", vbOKOnly + vbExclamation, "提示信息" JSFWJ = 999999999# End If '计算方位角的值 If vx = 0 And vy > 0 Then JSFWJ = PI / 2# ElseIf vx = 0 And vy < 0 Then JSFWJ = PI * 3# / 2# ElseIf vy = 0 And vx > 0 Then JSFWJ = 0 ElseIf vy = 0 And vx < 0 Then JSFWJ = PI ElseIf vx > 0 And vy > 0 Then JSFWJ = Atn(vy / vx) ElseIf vx < 0 And vy > 0 Then JSFWJ = Atn(vy / vx) + PI ElseIf vx < 0 And vy < 0 Then JSFWJ = Atn(vy / vx) + PI ElseIf vx > 0 And vy < 0 Then JSFWJ = Atn(vy / vx) + 2 * PI End If End Function '已知A、B两点坐标计算距离,JSJLS的中文意思是计算距离S '^_^ 提示此函数处理的坐标是包括带号的 Public Function JSJLS(xa As Double, ya As Double, xb As Double, yb As Double) As Double Dim vx As Double, vy As Double Dim N0 As Integer N0 = Fix(ya / 1000000): ya = ya - N0 * 1000000 N0 = Fix(yb / 1000000): yb = yb - N0 * 1000000 vx = xb - xa: vy = yb - ya '如果A、B两点坐标相同,出现提示对话框 If vx = 0 And vy = 0 Then MsgBox "您选择的是同一个点!", vbOKOnly + vbExclamation, "提示信息" JSJLS = 999999999# End If JSJLS = Sqr(vx * vx + vy * vy) '计算距离 End Function Private Sub cmd_返回选题界面_Click() DoCmd.OpenForm "选题界面", acNormal, "", "", , acNormal DoCmd.Close acForm, "坐标方位角及距离计算程序" End Sub Private Sub cmd_计算方位角_Click() Dim xa As Double, ya As Double, xb As Double, yb As Double, ZJ As Double, S As Double If IsNull(Me.txt_Xa) Or IsNull(Me.txt_Ya) Or IsNull(Me.txt_Xb) Or IsNull(Me.txt_Yb) Then MsgBox "请输入完整数据!!!", vbOKCancel + vbInformation, "提示" Me.txt_Xa.SetFocus Else xa = Me.txt_Xa: ya = Me.txt_Ya xb = Me.txt_Xb: yb = Me.txt_Yb If (xb - xa) = 0 And (yb - ya) = 0 Then MsgBox "您选择的是同一个点!", vbOKOnly + vbExclamation, "提示信息" Me.txt_计算方位角结果 = "" Else ZJ = JSFWJ(xa, ya, xb, yb) S = JSJLS(xa, ya, xb, yb) Me.txt_XAB = Format(xb - xa, "0.0000") Me.txt_YAB = Format(yb - ya, "0.0000") Me.txt_距离 = Format(S, "0.0000") Me.txt_计算方位角结果 = Format(RadianToAngle(ZJ), "0.00000000") End If End If End Sub Private Sub cmd_数据清空_Click() Me.txt_Xa = "": Me.txt_Ya = "" Me.txt_Xb = "": Me.txt_Yb = "" Me.txt_计算方位角结果 = "" Me.txt_距离 = "" Me.txt_Xa.SetFocus End Sub Private Sub Form_Load() Me.txt_计算方位角结果 = "" Me.txt_Xa.SetFocus End Sub
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 应用文书 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服