close

空間共線條件轉換成像點

'------------------------------------------

    Public Function colinear_condition(ByVal fc As Double, ByVal air_x As Double, ByVal air_y As Double, ByVal air_z As Double, ByVal ground_x As Double, ByVal ground_y As Double, ByVal ground_z As Double, ByVal omega As Double, ByVal fi As Double, ByVal kapa As Double) As Double(,)


        Dim mid_image(1, 1) As Double ' 只是用來一次回傳多個值 x=m(1,0) ,y=m(0,1)
        Dim mid_x, mid_y As Double
        Dim m11, m12, m13, m21, m22, m23, m31, m32, m33 As Double
        Const per_degree_value = Math.PI / 180
        Dim omega_value = omega * per_degree_value
        Dim fi_value = fi * per_degree_value
        Dim kapa_value = kapa * per_degree_value
        '----------------------------------------------------------------
        ' m11 = Math.Cos(omega * per_degree_value) 'omega單位是'度'  >>   但函數要帶的是value,做個轉換
        m11 = Cos(omega_value) * Cos(kapa_value)
        m12 = Sin(omega_value) * Sin(fi_value) * Cos(kapa_value) + Cos(omega_value) * Sin(kapa_value)
        m13 = (-1) * Cos(omega_value) * Sin(fi_value) * Cos(kapa_value) + Sin(omega_value) * Sin(kapa_value)

        m21 = (-1) * Cos(fi_value) * Sin(kapa_value)
        m22 = -1 * Sin(omega_value) * Sin(fi_value) * Sin(kapa_value) + Cos(omega_value) * Cos(kapa_value)
        m23 = Cos(omega_value) * Sin(fi_value) * Sin(kapa_value) + Sin(omega_value) * Cos(kapa_value)

        m31 = Sin(fi_value)
        m32 = -1 * Sin(omega_value) * Cos(fi_value)
        m33 = Cos(omega_value) * Cos(fi_value)
        '------------------------------------------------------------------


        Dim dx = (ground_x - air_x)
        Dim dy = (ground_y - air_y)
        Dim dz = (ground_z - air_z)

        Dim mid_x_numerator = m11 * dx + m12 * dy + m13 * dz
        Dim mid_x_denominator = m31 * dx + m32 * dy + m33 * dz

        mid_x = (-1 * fc) * mid_x_numerator / mid_x_denominator

        Dim mid_y_numerator = m21 * dx + m22 * dy + m23 * dz
        'Dim mid_y_denominator = m31 * dx + m32 * dy + m33 * dz
        Dim mid_y_denominator = mid_x_denominator  '分母都是一樣的 少一點計算量

        mid_y = (-1 * fc) * mid_y_numerator / mid_y_denominator
        '------------------------------------------------------

        mid_image(1, 0) = mid_x
        mid_image(0, 1) = mid_y


        Return mid_image


    End Function

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 prague12 的頭像
    prague12

    prague12

    prague12 發表在 痞客邦 留言(0) 人氣()