搜索
您的当前位置:首页正文

数字摄影测量坐标转换(vb代码)

来源:筏尚旅游网


实验报告1 摄影测量坐标变换

目的

实现摄影测量常用坐标系之间的变换

要求

用VB进行编程,主要实现像空间坐标系与像辅助坐标系之间的变换

方法与详细步骤

界面所入空间坐标

输入三个角度旋转(度分秒形式)

计算旋转变换矩阵

得到该点在像空间辅助坐标系中的坐标

实验成果

1.VB/VC原始代码

Const PI As Double = 3.14159265

Private Sub Command1_Click()

Rem 定义数据类型

Dim x1 As Double, x2 As Double, y1 As Double, y2 As Double, z1 As Double, z2 As Double

Dim ω As Single, κ As Single, φ As Single

Dim a1 As Single, a2 As Single, a3 As Single

Dim b1 As Single, b2 As Single, b3 As Single

Dim c1 As Single, c2 As Single, c3 As Single

Rem 从text中读取数据

x1 = Val(txtx1.Text): y1 = Val(txty1.Text): z1 = Val(txtz1.Text)

ω = deg(Val(Txtω.Text)): κ = deg(Val(Txtκ.Text)): φ = deg(Val(Txtφ.Text))

Debug.Print φ, κ, ω

Rem 求解 a1, a2, a3 ,b1, b2, b3, c1, c2, c3

a1 = Cos(φ * PI / 180) * Cos(κ * PI / 180) - Sin(ω * PI / 180) * Sin(κ * PI / 180) * Sin(φ * PI / 180)

a2 = -Cos(φ * PI / 180) * Sin(κ * PI / 180) - Sin(φ * PI / 180) * Sin(ω * PI / 180) * Cos(κ * PI / 180)

a3 = -Sin(φ * PI / 180) * Cos(ω * PI / 180)

b1 = Cos(ω * PI / 180) * Sin(κ * PI / 180)

b2 = Cos(ω * PI / 180) * Cos(κ * PI / 180)

b3 = -Sin(ω * PI / 180)

c1 = Sin(φ * PI / 180) * Cos(κ * PI / 180) + Sin(ω * PI / 180) * Cos(φ * PI / 180) * Sin(κ * PI / 180)

c2 = -Sin(φ * PI / 180) * Sin(κ * PI / 180) + Sin(ω * PI / 180) * Cos(φ * PI / 180) * Cos(κ * PI / 180)

c3 = Cos(ω * PI / 180) * Cos(φ * PI / 180)

Debug.Print a1, a2, a3

Debug.Print b1, b2, b3

Debug.Print b1, b1, b3

Rem 定义数组

Dim a(3, 3) As Single

a(1, 1) = a1: a(1, 2) = a2: a(1, 3) = a3

a(2, 1) = b1: a(2, 2) = b2: a(2, 3) = b3

a(3, 1) = c1: a(3, 2) = c2: a(3, 3) = c3

Dim x(3, 1) As Double

x(1, 1) = x1

x(2, 1) = y1

x(3, 1) = z1

Rem 求解

Dim y(3, 1) As Double

For i = 1 To 3

y(i, 1) = a(i, 1) * x(1, 1) + a(i, 2) * x(2, 1) + a(i, 3) * x(3, 1)

Next i

x2 = y(1, 1)

y2 = y(2, 1)

z2 = y(3, 1)

Debug.Print x2, y2, z2

Txtx2.Text = Format(x2, \"0.000\")

Txty2.Text = Format(y2, \"0.000\")

Txtz2.Text = Format(z2, \"0.000\")

End Sub

Rem 定义deg函数,即度分秒转换为度

Private Function deg(a As Double)

sign = Sgn(a)

a = Abs(a) + 0.0000000001

b = Int(a)

c = Int((a - b) * 100)

d = a - b - c / 100

deg = sign * (b + c / 60 + d / 0.36)

End Function

➢ 2.程序运行结果图

因篇幅问题不能全部显示,请点此查看更多更全内容

Top