MATLAB绘制星下点轨迹消除经度±180°跳变的方法

以下我简单地给出解决思路,拒绝伸手党。(以后我有时间了会把整个代码发上来)

主要用到的函数是plot(longitude,latitude),其中long为经度,在±180°之间;lat为纬度,在±90°之间。
我们所需要的星下点是连续的曲线,即使航天器星下点穿过了国际日界线,即±180°经线。如下图
在这里插入图片描述

但是可惜的是,如果简单的用下面这句函数,就无法画出上面的曲线

plot(Long*rad2deg, lat*rad2deg,'b-');
axis([-180,180,-90,90]);grid on;

在这里插入图片描述

可以发现,穿过日界线时,地图左右两端的点被直线连接起来了。解决方法是,判断跳变发生的时刻,分段画连续曲线。代码如下

la=length(Long);
diffLong=abs(diff(Long))>(npasses*180/la);
diffLong=find(diffLong);
if isempty(diffLong)
    plot(Long*rad2deg, lat*rad2deg,'b-'); 
else
    ka=1;
    totalSections=length(diffLong);
    for i=1:totalSections
        kb=diffLong(i);
        sec=ka:kb;
        ka=kb+1;
        plot(Long(sec)*rad2deg, lat(sec)*rad2deg,'b-'); 
    end
    sec=kb+1:la;
    plot(Long(sec)*rad2deg, lat(sec)*rad2deg,'b-'); 
end

hold off;
axis([-180,180,-90,90]);grid on;

其中diffLong 对经度数据取了差分;npasses是轨道圈数,这个变量可以大概估计一下;每次截取绘制的是向量Long的一部分sec=ka:kb

如果用MATLAB的Mapping Toolbox,可以加载地球图形,就更好看了。也就是在星下点的原图底部,先有这样两句

hold on;
geoshow('landareas.shp','FaceColor','green'); % Plot map
  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值