|
|
function Re2n = RotEcef2Ned(latDeg, lonDeg) |
|
|
% Re2n = RotEcef2Ned(latDeg, lonDeg) |
|
|
% Rotation matrix to convert an ECEF vector to |
|
|
% North, East, Down coordinates, and vice-versa |
|
|
% |
|
|
% inputs: latDeg, lonDeg (degrees) |
|
|
% output: Re2n, 3x3 unitary rotation matrix = |
|
|
% [-sin(lat)*cos(lon), -sin(lat)*sin(lon), cos(lat); |
|
|
% -sin(lon), cos(lon), 0 ; |
|
|
% -cos(lat)*cos(lon), -cos(lat)*sin(lon),-sin(lat)] |
|
|
% |
|
|
% Example: vNed = Re2n*vEcef, |
|
|
% Re2n'*vNed = vEcef |
|
|
|
|
|
%Author: Frank van Diggelen |
|
|
%Open Source code for processing Android GNSS Measurements |
|
|
|
|
|
%CHECK INPUTS |
|
|
if any(size(latDeg)~=[1,1]) || any(size(lonDeg)~=[1,1]) |
|
|
error('Inputs latDeg, lonDeg must be scalars') |
|
|
end |
|
|
|
|
|
D2R = pi/180; %degrees to radians scale factor |
|
|
latRad=D2R*latDeg(:); lonRad=D2R*lonDeg(:); |
|
|
|
|
|
clat = cos(latRad); |
|
|
slat = sin(latRad); |
|
|
clon = cos(lonRad); |
|
|
slon = sin(lonRad); |
|
|
|
|
|
Re2n = zeros(3,3); |
|
|
Re2n(1,1) = -slat.*clon; |
|
|
Re2n(1,2) = -slat.*slon; |
|
|
Re2n(1,3) = clat; |
|
|
|
|
|
Re2n(2,1) = -slon; |
|
|
Re2n(2,2) = clon; |
|
|
Re2n(2,3) = 0; |
|
|
|
|
|
Re2n(3,1) = -clat.*clon; |
|
|
Re2n(3,2) = -clat.*slon; |
|
|
Re2n(3,3) = -slat; |
|
|
|
|
|
end %end of function RotEcef2Ned |
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
|
|
|
|
% Copyright 2016 Google Inc. |
|
|
% |
|
|
% Licensed under the Apache License, Version 2.0 (the "License"); |
|
|
% you may not use this file except in compliance with the License. |
|
|
% You may obtain a copy of the License at |
|
|
% |
|
|
% http://www.apache.org/licenses/LICENSE-2.0 |
|
|
% |
|
|
% Unless required by applicable law or agreed to in writing, software |
|
|
% distributed under the License is distributed on an "AS IS" BASIS, |
|
|
% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
|
% See the License for the specific language governing permissions and |
|
|
% limitations under the License. |
|
|
|
|
|
|