diff --git a/RDI_Coords.pl b/RDI_Coords.pl --- a/RDI_Coords.pl +++ b/RDI_Coords.pl @@ -1,9 +1,9 @@ #====================================================================== # R D I _ C O O R D S . P L # doc: Sun Jan 19 17:57:53 2003 -# dlm: Tue Jan 5 13:56:55 2016 +# dlm: Sun Jan 31 12:42:43 2016 # (c) 2003 A.M. Thurnherr -# uE-Info: 185 37 NIL 0 0 72 0 2 4 NIL ofnI +# uE-Info: 185 0 NIL 0 0 72 0 2 4 NIL ofnI #====================================================================== # RDI Workhorse Coordinate Transformations @@ -40,6 +40,7 @@ # - removed some old debug statements # - removed unused code from &velBeamToBPInstrument # Jan 5, 2016: - added &velEarthToInstrument(@), &velInstrumentToBeam(@) +# Jan 9, 2016: - added &velEarthToBeam(), &velBeamToEarth() use strict; use POSIX; @@ -170,7 +171,8 @@ my($dta,$ens,$u,$v,$w,$ev) = @_; unless (@E2I) { - $hdg = $dta->{ENSEMBLE}[$ens]->{HEADING} - $dta->{HEADING_BIAS} if defined($dta->{ENSEMBLE}[$ens]->{HEADING}); + $hdg = $dta->{ENSEMBLE}[$ens]->{HEADING} - $dta->{HEADING_BIAS} + if defined($dta->{ENSEMBLE}[$ens]->{HEADING}); $pitch = $dta->{ENSEMBLE}[$ens]->{PITCH}; $roll = $dta->{ENSEMBLE}[$ens]->{ROLL}; my($rad_gimbal_pitch) = atan(tan(rad($pitch)) * cos(rad($roll))); @@ -179,12 +181,15 @@ my($sp,$cp) = (sin($rad_gimbal_pitch),cos($rad_gimbal_pitch)); my($sr,$cr) = (sin(rad($roll)), cos(rad($roll))); @E2I = $dta->{ENSEMBLE}[$ens]->{XDUCER_FACING_UP} - ? ([$ch*-$cr+$sh*$sp*-$sr, $ch*$sp*-$sr-$sh*-$cr, $cp*-$sr], + ? ( + [$ch*-$cr+$sh*$sp*-$sr, $ch*$sp*-$sr-$sh*-$cr, $cp*-$sr], [$sh*$cp, $ch*$cp, $sp ], - [$ch*-$sr-$sh*$sp*-$cr, -$sh*-$sr-$ch*$sp*-$cr, $cp*-$cr]) - : ([$ch*$cr+$sh*$sp*$sr, $ch*$sp*$sr-$sh*$cr, $cp*$sr ], + [$ch*-$sr-$sh*$sp*-$cr, -$sh*-$sr-$ch*$sp*-$cr, $cp*-$cr] + ) : ( + [$ch*$cr+$sh*$sp*$sr, $ch*$sp*$sr-$sh*$cr, $cp*$sr ], [$sh*$cp, $ch*$cp, $sp ], - [$ch*$sr-$sh*$sp*$cr, -$sh*$sr-$ch*$sp*$cr, $cp*$cr ]); + [$ch*$sr-$sh*$sp*$cr, -$sh*$sr-$ch*$sp*$cr, $cp*$cr ] + ); } return defined($dta->{ENSEMBLE}[$ens]->{HEADING}) @@ -229,6 +234,17 @@ } } # STATIC SCOPE +#---------------------------------------------------------------------- +# velEarthToBeam() combines velEarthToInstrument and velInstrumentToBeam +#---------------------------------------------------------------------- + +sub velEarthToBeam(@) +{ + my($dta,$ens,$u,$v,$w,$ev) = @_; + return velInstrumentToBeam($dta, + velEarthToInstrument($dta,$ens,$u,$v,$w,$ev)); +} + #====================================================================== # velBeamToBPEarth(@) calculates the vertical- and horizontal vels # from the two beam pairs separately. Note that (w1+w2)/2 is