Convert ADP velocity components from a beam-based coordinate system to a xyz-based coordinate system. The action depends on the type of object. Objects creating by reading RDI Teledyne, Sontek, and some Nortek instruments are handled directly.

## Usage

`beamToXyzAdp(x, debug = getOption("oceDebug"))`

## Arguments

- x
an adp object.

- debug
an integer specifying whether debugging information is to be printed during the processing. This is a general parameter that is used by many

`oce`

functions. Generally, setting`debug=0`

turns off the printing, while higher values suggest that more information be printed. If one function calls another, it usually reduces the value of`debug`

first, so that a user can often obtain deeper debugging by specifying higher`debug`

values.

## Value

An object with the first 3 velocity indices having been altered to
represent velocity components in xyz (or instrument) coordinates. (For
`rdi`

data, the values at the 4th velocity index are changed to
represent the "error" velocity.)
To indicate the change, the value of `x[["oceCoordinate"]]`

is
changed from `beam`

to `xyz`

.

## Details

For a 3-beam Nortek `aquadopp`

object, the beams are transformed into
velocities using the matrix stored in the header.

For 4-beam objects (and for the slanted 4 beams of 5-beam
objects), the along-beam velocity components \(B_1\)
\(B_2\), \(B_3\), and \(B_4\)
are converted to Cartesian velocity components \(u\)
\(v\) and \(w\)
using formulae from section 5.5 of *RD Instruments* (1998), viz. the
along-beam velocity components \(B_1\), \(B_2\), \(B_3\),
and \(B_4\) are used to calculate velocity components in a cartesian
system referenced to the instrument using the following formulae:
\(u=ca(B_1-B_2)\), \(v=ca(B_4-B_3)\),
\(w=-b(B_1+B_2+B_3+B_4)\). In addition to these,
an estimate of the
error in velocity is computed as
\(e=d(B_1+B_2-B_3-B_4)\).
The geometrical factors in these formulae are:
`c`

is +1 for convex beam geometry or -1 for concave beam geometry,
\(a=1/(2\sin\theta)\)
where \(\theta\) is the angle the beams make to the axial direction
(which is available as `x[["beamAngle"]]`

),
\(b=1/(4\cos\theta)\), and
\(d=a/\sqrt{2}\).

## References

Teledyne RD Instruments. “ADCP Coordinate Transformation: Formulas and Calculations,” January 2010. P/N 951-6079-00.

WHOI/USGS-provided Matlab code for beam-enu transformation

`http://woodshole.er.usgs.gov/pubs/of2005-1429/MFILES/AQDPTOOLS/beam2enu.m`

## See also

See `read.adp()`

for other functions that relate to
objects of class `"adp"`

.

Other things related to adp data:
`[[,adp-method`

,
`[[<-,adp-method`

,
`ad2cpCodeToName()`

,
`ad2cpHeaderValue()`

,
`adp`

,
`adp-class`

,
`adpAd2cpFileTrim()`

,
`adpConvertRawToNumeric()`

,
`adpEnsembleAverage()`

,
`adpFlagPastBoundary()`

,
`adpRdiFileTrim()`

,
`adp_rdi.000`

,
`applyMagneticDeclination,adp-method`

,
`as.adp()`

,
`beamName()`

,
`beamToXyz()`

,
`beamToXyzAdpAD2CP()`

,
`beamToXyzAdv()`

,
`beamUnspreadAdp()`

,
`binmapAdp()`

,
`enuToOther()`

,
`enuToOtherAdp()`

,
`handleFlags,adp-method`

,
`is.ad2cp()`

,
`plot,adp-method`

,
`read.adp()`

,
`read.adp.ad2cp()`

,
`read.adp.nortek()`

,
`read.adp.rdi()`

,
`read.adp.sontek()`

,
`read.adp.sontek.serial()`

,
`read.aquadopp()`

,
`read.aquadoppHR()`

,
`read.aquadoppProfiler()`

,
`rotateAboutZ()`

,
`setFlags,adp-method`

,
`subset,adp-method`

,
`subtractBottomVelocity()`

,
`summary,adp-method`

,
`toEnu()`

,
`toEnuAdp()`

,
`velocityStatistics()`

,
`xyzToEnu()`

,
`xyzToEnuAdp()`

,
`xyzToEnuAdpAD2CP()`