摄影测量学空间后方交会Python代码

这是山东科技大学测绘学院遥感专业课程《摄影测量学》的编程作业,使用Python代码求解。代码构建了空间后方交会类,虽未优化、编写较粗糙,但能正常工作,输入情况在代码底部。

引言

这是山东科技大学测绘学院遥感专业18级大三课程王志勇《摄影测量学》的编程家庭作业。

输入给定,使用Python代码求解。输入情况在代码底部。

代码构建了一个空间后方交会类,没有经过任何优化,赶出来的代码,很多地方写的很丑陋很暴力,但是的确能够工作。

代码

"""
后方交会代码
作者:Dash
version:0.1
without any optimization
"""

import numpy as np

class RearIntersection(object):
    def __init__(self,f, X, Y, Z, x, y, m = 50000):
        """
        `X`,`Y`,`Z`,`x`,`y` is list of control point paras.
        """

        # transform to np arrays.
        self._f = np.array(f, dtype = np.float32)
        # control point
        self._X = np.array(X, dtype = np.float32)
        self._Y = np.array(Y, dtype = np.float32)
        self._Z = np.array(Z, dtype = np.float32)
        # image point
        self._x = np.array(x, dtype = np.float32)
        self._y = np.array(y, dtype = np.float32)
        # scale
        self._m = np.array(m, dtype = np.float32)

        self._H = self._m * self._f

    def solve(self):
        
        phi = 0
        omega = 0
        kappa = 0

        n = len(self._x)
        
        # initial line paras
        Z0 = self._m * self._f + (1/n) * np.sum(self._Z)
        X0 = (1/n) * np.sum(self._X)
        Y0 = (1/n) * np.sum(self._Y)

        Max_Step = 100000
        Xt = X0
        Yt = Y0
        Zt = Z0
        
        for i in range(Max_Step):

            a1 = np.cos(phi)*np.cos(kappa)-np.sin(phi)*np.sin(omega)*np.sin(kappa)
            a2 = -np.cos(phi)*np.sin(kappa)-np.sin(phi)*np.sin(omega)*np.cos(kappa)
            a3 = -np.sin(phi)</
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值