实验报告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.程序运行结果图
因篇幅问题不能全部显示,请点此查看更多更全内容