1 |
% function [utide_am1 utide_ph1 vtide_am1 vtide_ph1] = tide_rot(utide_am0,utide_ph0,vtide_am0,vtide_ph0,angleCS, angleSN) |
2 |
% |
3 |
% Rotate tidal current parameter from NS and EW to a new coordinate defined by angleCS and angleSN |
4 |
% |
5 |
% Input: utide_am0, utide_ph0(in deg) |
6 |
% vtide_am0, vtide_ph0(in deg) |
7 |
% AngleCS angleSN: cos(alpha), sin(alpha); |
8 |
% alpha is the angle between new coordinate (utide_am1, vtide_am1) and due east |
9 |
% |
10 |
% Output: utide_am1, utide_ph1(in deg) |
11 |
% vtide_am1, vtide_ph1(in deg); |
12 |
% |
13 |
% Both input and output are assumed (1 L) array |
14 |
% |
15 |
% XC WANG /07/12/2012 |
16 |
% |
17 |
function [utide_am1 utide_ph1 vtide_am1 vtide_ph1] = tide_rot(utide_am0,utide_ph0,vtide_am0,vtide_ph0,angleCS,angleSN) |
18 |
|
19 |
rad2deg = 180/pi ; |
20 |
deg2rad = pi/180 ; |
21 |
|
22 |
% Convert deg to radian |
23 |
utide_ph0 = utide_ph0*deg2rad ; |
24 |
vtide_ph0 = vtide_ph0*deg2rad ; |
25 |
|
26 |
u1_p1 = utide_am0.*angleCS.*cos(utide_ph0) + vtide_am0.*angleSN.*cos(vtide_ph0) ; |
27 |
u1_p2 = utide_am0.*angleCS.*sin(utide_ph0) + vtide_am0.*angleSN.*sin(vtide_ph0) ; |
28 |
|
29 |
utide_am1 = sqrt(u1_p1.*u1_p1 + u1_p2.*u1_p2) ; |
30 |
sin1 = u1_p2 ./ utide_am1 ; |
31 |
cos1 = u1_p1 ./ utide_am1 ; |
32 |
utide_ph1 = atan2(sin1, cos1) ; |
33 |
utide_ph1 = utide_ph1*rad2deg ; |
34 |
|
35 |
v1_p1 = -utide_am0.*angleSN.*cos(utide_ph0) + vtide_am0.*angleCS.*cos(vtide_ph0) ; |
36 |
v1_p2 = -utide_am0.*angleSN.*sin(utide_ph0) + vtide_am0.*angleCS.*sin(vtide_ph0) ; |
37 |
vtide_am1 = sqrt(v1_p1 .* v1_p1 + v1_p2.*v1_p2) ; |
38 |
sin1 = v1_p2 ./ vtide_am1 ; |
39 |
cos1 = v1_p1 ./ vtide_am1 ; |
40 |
vtide_ph1 = atan2(sin1, cos1) ; |
41 |
vtide_ph1 = vtide_ph1*rad2deg ; |
42 |
|
43 |
return |
44 |
end |