1太阳影子定位摘要太阳影子定位技术就是通过分析物体的太阳影子长度变化,来确定物体所在的时间和地理位置。本文通过分析有关太阳影子各因素之间的关系,采用几何关系及MATLAB软件编程等方法,对所给问题分别给出了数学模型及处理方案。对于问题一,根据题目要求,首先确定影响影子长度的各个因素(竿长,纬度,时间,日期),然后再根据几何知识确定它们之间的数学关系,建立相关的数学模型。再运用MATLAB进行编程及绘出影长与各个变化因素的变化曲线图。对于问题二,根据题目可知,在时间点、日期、影子坐标已知的条件下,需要求出所测点的地理位置,即经纬度。我们根据问题一的相关结论,做出合理的假设。根据附件1中所给点求出影长,用MATLAB软件拟合出所求点的影长与当地时间的关系曲线,确定各个影长所对应的当地时间,找到对应的北京时间。得到所求地与北京的时间差,即可用时间差和经度的关系求得当地的经度。在此问题求解中,我们运用相关公式校准坐标系,分析各个公式之间的相互转换,计算出题目所求地点的纬度。从而,确定当地的位置。对于问题三,给定时间与影子的坐标,确定日期及地理位置。经度的确定与问题二中求得经度的方法一样。对于纬度的求解,则是运用相关因素之间的公式,转换变化得出日期与纬度之间的关系。再用MATLAB软件对变量(纬度)进行穷举,得到最优解,得出所求纬度,确定具体的地理位置。对于问题四,用MATLAB软件分析视频,将视频处理成图片。同样,用时间差来求出经度,并用公式算得纬度,以此来确定所测物的位置及日期。最后,我们对于所建立的数学模型的优缺点做出了评价关键词:matlab影子变化经纬度三角变换坐标矫正2一.问题重述1.1背景确定视频的拍摄地点和拍摄日期是视频数据分析的重要方面,太阳影子定位技术就是通过分析视频中物体的太阳影子变化,确定视频拍摄的地点和日期的一种方法。1.2需要解决的问题问题一:建立影子长度变化与各个参数的数学模型,并应用此模型解答给定条件(2015年10月22日北京时间9:00-15:00之间天安门广场(北纬39度54分26秒,东经116度23分29秒)3米高的直杆)的影子变化曲线。问题二:根据固定直杆在水平地面上的影子端点坐标,建立数学模型确定所处地点。依据此数学模型确定所给的影子顶点坐标数据的若干个可能地点。问题三:在前一问基础上,若不给出日期,建立模型求解地点以及日期。依据此模型确定所给条件的地点及日期。问题四:给出一根杆的影子视频,并且已知杆长2m,建立模型确定拍摄地点。拓展:建立模型确定拍摄地点及日期。二.问题分析这属于竿影日照数学问题。把竿顶影子端点坐标移动的轨迹,近似看成太阳的运行轨迹。运用时角,赤纬角,太阳高度角以及太阳方位角的角度关系进行推导。2.1问题一影子的长度变化和时间、纬度、日期的变化存在某种数学关系,因为有三个变量,在已知物体长度的情况下,我们要建立影子和单个因素的关系,所以必须先固定其中两个变量进而得出影子长度和另一变量的函数关系。在计算给定条件影子长度变化规律时,只需带入相应数学模型即可得到要求所需。2.2问题二当给定影子端点坐标时,由于建立的坐标系是随机的,所以必须先矫正成标准的坐标系,由于大致可认为影子的端点坐标连线是太阳的运动轨迹反方向,在此情况下就可以矫正坐标系。要确定地点,一定要知道经纬度,计算经度时,可3以通过时差和经度差的关系进行求解。计算纬度时,可以利用第一问的数学模型反过来求解。2.3问题三本题在上一题的基础上,要求解日期。同样,此题坐标是也不是标准的,也要进行矫正。经度的算法可以参照问题二,但是纬度的计算时没有日期,使得模型里有两个变量,不能直接求解。由于只有一个方程,所以不能直接求解两个未知量,但是两个未知量都是有范围的,所以在这个范围内对这两个变量同时进行穷举,进而解的最优解。2.4问题四本题给了一个视频,必须对该视频通过matlab进行处理,得到每一帧的图像,进而建立坐标系得到影子的坐标。得到坐标后,可以利用问题二和问题三的模型进行求解。三.模型假设1.假设题目中所给的数据全都真实可靠。2.假设影子定点坐标连线方向及为太阳运动方向的反方向。3.假设大气折射对影子形成无影响。4.假设太阳方位角,太阳高度角,赤纬角是准确的。5.假设北京正午12:00时影子最短。6.假设地点都在北半球。四.符号说明表1符号说明符号说明单位时角度st太阳时小时t时差小时tt北京时间时δ赤纬角度4图1n日期序号太阳高度角度经度度φ当地纬度度A太阳方位角度H竿长米L影长米五.模型的建立与解决5.1问题一:5.1.1模型的准备依据题目要求,要求建立影长和各个参数的变换规律,这个参数基本有纬度,时间,日期,竿长这几个变量,而影长和竿长的关系研究没什么意义,再次忽略,只研究影长和其他变量之间的关系。5.1.2模型的建立依据题意,竿长已知,若已知太阳高度角,根据三角关系即可得到影子的长度。依据竿影日照原理(如图一)可以得到竿长,影长以及太阳高度角的三角关系βtanLH(1)其中,H是竿的长度,L是影子的长度,β是太阳高度角,已知太阳高度角的近似计算公式:cosωcosδcosφ+sinδsinφsin(2)其中,φ是当地纬度,δ是赤纬角,ω是时角。依据公式(2)可以看出,要求得太阳高度角,必须求得赤纬角δ和时角ω。同时,我们知道太阳时角是以正午12点为零度开始计算,每小时15度,上午为正,下午为负。因此可得时角公式:5)12(15st(3)其中ts为太阳时。赤纬角就是当时日期太阳直射的纬度。有计算公式:)365)nπ(2842(sin23.45δ(4)其中n为日期序号(如:1月1日n=1)。通过公式(2)(3)(4)的联立可以得到太阳高度角的方程:cosωcosδcosφ+sinδsinφ(arcsin)(5)进而我们可得tanβ的值,根据公式(1)可得影长模型:tanHL(6)根据以上条件,可得数学模型βtanHLcosωcosδcosφ+sinδsinφsin)365)n2π(284(sin23.45δ)12(15st(7)5.1.3模型的求解模型中及为影长L和时间t,纬度φ,以及日期n的函数关系。当其中两个自变量确定后,就可建立影长L和另外一个自变量的模型。(1)影长L和时间t的模型给定日期n和纬度φ,模型就变成了影长L和时间t的一元函数,应用Matlab即可得到影长的变化曲线。在此,我们验证了赤道上1月1日的影长变化(如图2)由图可以看出,当1月1日时,9:00到15:00的曲线为开口向上的抛物线,在早上9:00时,由于太阳直射南半球,所以影子长,到了当地正午12:00时影子最短,下午又开始增长,符合实际,模型基本成立。6图3赤道正午12:00一年中影长的变化(2)影长L和日期n的模型当我们确定时间t以及纬度φ时,模型就变成了影长L和日期n的一元函数,应用Matlab即可得到影长的变化曲线。在此,我们验证了赤道正午12:00一年中影长的变化(如图3)由图可以看出,一年内影子从第一天开始递减,当大致达到3月份(北京六图2赤道1月1日的影长变化0501001502002503003504000.20.40.60.811.21.41.6日期n影长L7月份)时,影子最短,接近0m,而求一年内有两次接近于0m的时候(即北京春分和秋分)。基本符合实际,模型基本成立。(3)影长L和纬度φ的模型当我们确定时间t以及日期n时,模型就变成了影长L和纬度φ的一元函数,应用Matlab即可得到影长的变化曲线。在此,我们验证了1月1日正午12:00各个纬度影长的变化(如图4)在图中验证北京1月1日正午12:00的影长,基本符合实际,所以可认为建模基本成立。(4)本题要求模型。已知北京地理坐标是北纬39度54分26秒,东经116度23分29秒,日期序号为第295天,竿长3m,可以将这些数据直接带入影长L和时间ts的模型,即可得以下曲线,如图5。图41月1日正午12:00各个纬度影长的变化85.2问题二:5.2.1模型的准备模型建立之前,我们分析数据得到所给影子顶点坐标并非以标准的东西南北方向坐标系下的坐标,所以我们必须进行矫正,把坐标系修正成正南正北的坐标系。而后确定时差来确定经度,进而得到纬度。5.2.2模型的建立(1)坐标系矫正由于坐标系建立方式不确定,所以必须进行坐标系矫正,得到新坐标系。我们把给定的数据通过matlab拟合成曲线,得到斜率k,并通过三角关系式:karctanθ(8)得到偏转角度θ(θ角如图6)。进而通过坐标旋转公式yxcosθsinθsinθcosθ’y'x(9)获得新的坐标(x1,y1)。注:矫正坐标系以东西方向为x轴,南北方向为y轴。图5北京10月22日影长变化91011121314153.544.555.566.57时间t影长L图69(2)时差的求解通过所给坐标在matlab中进行拟合,得到一条影长L关于时间ts的抛物线方程:L=ats2-bts+c(10)其中L为影长,t为时间。解出最低点坐标t0,利用北京时间12:00时影子最短,利用比例关系)12()(0tstttt(11)其中ts为时间,t为时差,t0为最低点时间,t北为对应的北京时间。计算出时差t。(3)经度的求解已知两地经度相差1度,时间相差4分钟,所以可列出:4北st(12)其中γ为当地经度,γ北为北京经度,ts为时差。通过公式(12)解得经度γ(4)纬度的求解太阳方位角就是太阳在方位上的角度,它和坐标有以下关系:tanAy11x(13)其中(x1,y1)为矫正还得坐标,A为太阳方位角。得到太阳方位角:11yarctanAx又有太阳方位角和时角,赤纬角的关系:coscosδsinωsinA(14)再结合公式(2),可得方程组:cosωcosδcosφ+sinδsinφsincoscosδsinωsinAtanAxy11(15)10即可解得纬度。5.2.3模型的求解(1)坐标系矫正通过matlab把附录1数据进行拟合得到如图7曲线,并获得斜率k=0.147。通过公式(8)可得θ=0.1459通过坐标旋转公式(9),把所有坐标矫正,得到以下矫正坐标(部分)表2矫正坐标(部分)x1y1x1y1x1y11.0978207230.3412172341.2722912620.3440652351.4612646620.3451849451.1316800760.3418985611.3088218890.3443537611.5010747290.3450923171.166034110.3425071471.3459606820.3446539331.5417053810.3450811751.2009963080.343127381.3838065750.3449512051.4612646620.3451849451.2363397020.3435904841.42213260.34507681.5830140380.34486926(2)时差及经度的求解将所给坐标在matlab中进行拟合,得到影长L关于时间ts的抛物线方程L=0.1483ts2-3.4541ts+20.5245(9),拟合曲线如图6,解得最低点时间坐标为ts0=11.5984,同时所给数据第一个坐标对应的时间坐标为ts=13.8760。进而解得到时差t=0.4224。因为已知北京经度大约为116°,通过方程(11)可求出该点经度γ=110.04°。图711(3)纬度的求解由于模型(15)求解比较复杂,程序不能直接解出纬度角,于是我们在纬度区间0~π/2之间间隔0.001取值依次带入方程,并求解出最优解。解得结果如表3:表3纬度纬度24.57924.694424.80901.20321.31781.432391.6042825.382025.492.06262.23453