equal
deleted
inserted
replaced
1 #====================================================================== |
1 #====================================================================== |
2 # R D I _ C O O R D S . P L |
2 # R D I _ C O O R D S . P L |
3 # doc: Sun Jan 19 17:57:53 2003 |
3 # doc: Sun Jan 19 17:57:53 2003 |
4 # dlm: Sun Jan 15 20:04:13 2012 |
4 # dlm: Wed Aug 7 11:18:51 2013 |
5 # (c) 2003 A.M. Thurnherr |
5 # (c) 2003 A.M. Thurnherr |
6 # uE-Info: 33 74 NIL 0 0 72 0 2 4 NIL ofnI |
6 # uE-Info: 199 23 NIL 0 0 72 0 2 4 NIL ofnI |
7 #====================================================================== |
7 #====================================================================== |
8 |
8 |
9 # RDI Workhorse Coordinate Transformations |
9 # RDI Workhorse Coordinate Transformations |
10 |
10 |
11 # HISTORY: |
11 # HISTORY: |
29 # Dec 20, 2010: - cosmetics |
29 # Dec 20, 2010: - cosmetics |
30 # Dec 23, 2010: - added &velBeamToBPInstrument |
30 # Dec 23, 2010: - added &velBeamToBPInstrument |
31 # Jan 22, 2011: - made velApplyHdgBias calculate sin/cos every time to allow |
31 # Jan 22, 2011: - made velApplyHdgBias calculate sin/cos every time to allow |
32 # per-ensemble corrections |
32 # per-ensemble corrections |
33 # Jan 15, 2012: - replaced defined(@...) by (@...) to get rid of warning |
33 # Jan 15, 2012: - replaced defined(@...) by (@...) to get rid of warning |
|
34 # Aug 7, 2013: - BUG: &velBeamToBPInstrument did not return any val unless |
|
35 # all beam velocities are defined |
34 |
36 |
35 use strict; |
37 use strict; |
36 use POSIX; |
38 use POSIX; |
37 |
39 |
38 my($PI) = 3.14159265358979; |
40 my($PI) = 3.14159265358979; |
157 sub velBeamToBPEarth(@) |
159 sub velBeamToBPEarth(@) |
158 { |
160 { |
159 my($dta,$ens,$b1,$b2,$b3,$b4) = @_; |
161 my($dta,$ens,$b1,$b2,$b3,$b4) = @_; |
160 my($v12,$w12,$v34,$w34); |
162 my($v12,$w12,$v34,$w34); |
161 |
163 |
162 return (undef,undef,undef,undef) |
|
163 unless defined($b1) && defined($b2) && defined($b3) && defined($b4); |
|
164 |
|
165 unless (defined($TwoCosBAngle)) { |
164 unless (defined($TwoCosBAngle)) { |
166 $TwoCosBAngle = 2 * cos(rad($dta->{BEAM_ANGLE})); |
165 $TwoCosBAngle = 2 * cos(rad($dta->{BEAM_ANGLE})); |
167 $TwoSinBAngle = 2 * sin(rad($dta->{BEAM_ANGLE})); |
166 $TwoSinBAngle = 2 * sin(rad($dta->{BEAM_ANGLE})); |
168 } |
167 } |
169 my($roll) = rad($dta->{ENSEMBLE}[$ens]->{ROLL}); |
168 my($roll) = rad($dta->{ENSEMBLE}[$ens]->{ROLL}); |
194 $v12 = $v12_ic*$cr + $w12_ic*$sr + $w34_ic*$sp; |
193 $v12 = $v12_ic*$cr + $w12_ic*$sr + $w34_ic*$sp; |
195 $w34 = $w34_ic*$cp - $v34_ic*$sp - $v12_ic*$sr; |
194 $w34 = $w34_ic*$cp - $v34_ic*$sp - $v12_ic*$sr; |
196 $v34 = $v34_ic*$cp + $w34_ic*$sp + $w12_ic*$sr; |
195 $v34 = $v34_ic*$cp + $w34_ic*$sp + $w12_ic*$sr; |
197 } |
196 } |
198 |
197 |
|
198 $v12=$w12=undef unless (defined($b1) && defined($b2)); |
|
199 $v34=$w34=undef unless (defined($b3) && defined($b4)); |
|
200 |
199 return ($v12,$w12,$v34,$w34); |
201 return ($v12,$w12,$v34,$w34); |
200 } |
202 } |
201 } |
203 } |
202 |
204 |
203 #=================================================================== |
205 #=================================================================== |