⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 analog_vis_satellite.m

📁 上一个的继续,连续有九个压缩文件,大家可以打开解压后自己慢慢享用,这个都是本人调试通过了的,希望共同进步!
💻 M
字号:
%计算出所有卫星位置以后也要同时知道哪一颗卫星对用户来说是可见的
%因为只有根据可见的卫星才能够进行定位
clear;
clc;
close all;
a=26560;    %a is the long radii of a ellipse
e=0.02;
E=[0:0.1:2*pi];
x=a*(cos(E)-e);
y=a*sqrt((1-e^2))*sin(E);
z=0*E;
TimeNow=0;  %Unit is hour
%Above is the UserPosition we give. and CurrentTime
%because the Satellites' positions changing with Time.
global SatellitePosition        %定义全局变量
SatellitePosition=ones(24,4);
figure(1);
DrawEarth(0);
hold on;
DtoR=2*pi/360;
A1=[32.8    92.8    152.8   212.6   272.8   332.8];
DrawSatelliteOrbit;     %调用程序4

%平均地角
Ctable=[10  50  160 260;
        80  180 220 320;
        10  130 250 340;
        50  150 170 300;
        100 210 310 340;
        140 150 240 350];
    Wx=ones(1,1);
    Wy=ones(1,1);
    Wz=ones(1,1);
    simple=1;
    for k=1:6
        A=A1(k)*DtoR;
        B=55*DtoR;
            for m=1:4
                C=Ctable(k,m)*DtoR+TimeNow*2*pi/24; %近地点的幅角
                x=a*(cos(C)-e);
                y=a*sqrt((1-e^2))*sin(C);
                z=0*C;
                R3=[cos(A)  -sin(A) 0;
                    sin(A)  cos(A)  0;
                    0         0     1];
                
                R1=[1       0       0;
                    0    cos(B)  -sin(B);
                    0   sin(B)   cos(B)];
                
                R2=[cos(C)  -sin(C) 0;
                    sin(C)  cos(C)  0;
                    0       0       1];
                L1=length(E);
                R312=R3*R1*R2;
                Ans=R312*[x;y;z];
                Wx=[Wx Ans(1,:)];
                Wy=[Wy Ans(2,:)];
                Wz=[Wz Ans(3,:)];
                x1=Ans(1,:);
                y1=Ans(2,:);
                z1=Ans(3,:);
                DrawSatellite(x1,y1,z1,'k');  %调用程序三
                hold on;
            end
        end
        %用余弦定理计算地心到用户和用户到卫星之间的夹角
        %如果两者之间的夹角小于90度,就认为该卫星是不可见的
        EarthCenterPos=[0 0 0];
        UserPosition=[6400 0 0];
        for k=1:24
            Temp=SatellitePosition(k,1:3)-UserPosition;
            Dist1=Temp*Temp';
            Temp=UserPosition-EarthCenterPos;
            Dist2=Temp*Temp';
            Temp=SatellitePosition(k,1:3)-EarthCenterPos;
            Dist3=Temp*Temp';
            JiaJiao=acos((Dist1+Dist2-Dist3)/2/sqrt(Dist1)/sqrt(Dist2));
            if(JiaJiao<=pi/2)
                SatellitePosition(k,4)=0;
            end
        end
        figure(2)
        DrawEarth(0);
        DrawSatelliteOrbit;
        for k=1:24
            if(SatellitePosition(k,4)==1)
                TempX=SatellitePosition(k,1);
                TempY=SatellitePosition(k,2);
                TempZ=SatellitePosition(k,3);
                DrawSatellite(TempX,TempY,TempZ,'simple');
                %调用程序三绘制出可见卫星
            end
        end
        TempX=UserPosition*(1);
        TempY=UserPosition*(2);
        TempZ=UserPosition*(3);
        Cube=50;
        BoxPlot3(TempX,TempY,TempZ,Cube,Cube,3*Cube,3);
        hold on;
    end
    
                
                
        
        

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -