?? issatellitevisiable.m
字號:
function isSatVis = isSatelliteVisiable(UserPosition,Satellite,t)
% 驗證在某一時刻,某一位置,某一顆衛(wèi)星的可見性,衛(wèi)星可見則返回1,否則返回0
% UserPosition = [latitude longitude];
% 其中-180 < longitude < 180 東經(jīng)為正,西經(jīng)為負(fù);-90< latitude <90, 北緯為正,南緯為負(fù)
% Satellite = [ i Omiga a e w M ]; 其中6個分量為初始時刻t0時的初始值
% 6個分量分別是軌道面傾角,升交點(diǎn)赤經(jīng),長半軸,軌道偏心率,近地點(diǎn)角中,平近地角
% 求出t時刻衛(wèi)星位置,將t時刻用戶地理坐標(biāo)轉(zhuǎn)換成空間坐標(biāo),驗證衛(wèi)星的可見性
DtoR = 2*pi/360;
CommandAngle = 90 * 2*pi/360; % 地心-用戶-衛(wèi)星 間夾角大于該角度時,衛(wèi)星可見
% 如果要求10度仰角,則最夾角最低為100度
%%%%%%%%%%%%%%%%%%%%% 求解衛(wèi)星位置
% GASTw : 星期六午夜至星期天子夜的交換時刻格林尼治視恒星時
% SatPos = [Xk Xk Xk]';
GASTw = pi/3;
SatPos = SatellitePos(Satellite,GASTw,t);
%%%%%%%%%%%%%%%%%%%%% 用戶坐標(biāo)轉(zhuǎn)換
Re = 6366707; % 地球圓體半徑
long = UserPosition(2) * DtoR;
lat = UserPosition(1) * DtoR;
% 用戶的地心直角坐標(biāo)
Xu = Re * cos(long);
Yu = Re * sin(long);
Zu = Re * sin(lat);
UserPos = [Xu Yu Zu]';
Delta_Pos = SatPos - UserPos;
RR = [-sin(lat)*cos(long) -sin(lat)*sin(long) cos(lat);
-sin(long) cos(long) 0;
cos(lat)*cos(long) cos(lat)*sin(long) sin(lat);]; % 轉(zhuǎn)換距陣
PosUser = RR * Delta_Pos; % 衛(wèi)星在觀測站的站心直角坐標(biāo)系坐標(biāo)
Xps = PosUser(1);
Yps = PosUser(2);
Zps = PosUser(3);
%%%%%%%%%%%%%%%%%%%% 驗證衛(wèi)星是否可見
% 用站心極坐標(biāo)表示衛(wèi)星位置
% Rp - 測者到衛(wèi)星間的距離;Ap - 衛(wèi)星方位角;Ep - 衛(wèi)星高度角
Rp = sqrt(Xps^2+Yps^2+Zps^2);
Ap = atan(Yps/Xps);
Ep = atan(Zps/sqrt(Xps^2+Yps^2));
if Ep>0
isSatVis = 1;
else
isSatVis=0;
end
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -