# RMtrafo: Transformation of coordinate systems In RandomFields: Simulation and Analysis of Random Fields

## Description

The functions transform a coordinate system into another. Currently, essentially only from the earth system to cartesian.

`RMtrafo` is the internal basic function that also allows to reduce vectors to their norm.

## Usage

 ```1 2 3``` ```RMtrafo(phi, new) RFearth2cartesian(coord, units=NULL, system="cartesian", grid=FALSE) RFearth2dist(coord, units=NULL, system="cartesian", grid=FALSE, ...) ```

## Arguments

 `new` integer or character. One of the values `RC_ISOTROPIC`, `RC_SPACEISOTROPIC`, `RC_CARTESIAN_COORD`, `RC_GNOMONIC_PROJ`, `RC_ORTHOGRAPHIC_PROJ`, Or the corresponding `RC_ISONAMES`. Note that `RMtrafo` only allows for integer values. Default: `RC_CARTESIAN_COORD` `phi` optional submodel `coord` matrix or vector of earth coordinates `units` "km" or "miles"; if not given and `RFoptions()\$general\$units != ""` the latter is used. Otherwise `"km"`. `system` integer or character. The coordinate system, e.g. `"cartesian"`, `"gnomonic"`, or `"orthographic"`. `grid` logical. Whether the given coordinates are considered to be on a grid given by `c(start, step, length)`. Default: FALSE `...` the optional arguments of `dist`

## Details

The functions transform between different coordinate systems.

## Value

The function `RMtrafo` returns a matrix, in general. For fixed column, the results, applied to each row of the matrix, are returned.

The function `RFearth2cartesian` returns a matrix in one-to-one correspondance with `coord` assuming that the earth is an ellipsoid.

The function `RFearth2dist` calculates distances, cf. `dist`, assuming that the earth is an ellipsoid.

## Note

Important options are `units` and `coordinate_system`, see `RFoptions`.

Note also that the zenit must be given explicitely for projection onto a plane. See the examples below.

## Author(s)

Martin Schlather, [email protected]

## References

For calculating the earth coordinates as ellipsoid:

linkconstants, `RMangle`
 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17``` ```data(weather) (coord <- weather[1:5, 3:4]) (z <- RFfctn(RMtrafo(new=RC_CARTESIAN_COORD), coord)) (z1 <- RFearth2cartesian(coord)) ## equals z z1 - z ## 0, i.e., z1 and t(z) are the same dist(z) (d <- RFearth2dist(coord)) d - dist(z) ## 0, i.e., d and dist(z) are the same ## projecction onto planes RFoptions(zenit=c(-122, 47)) RFearth2cartesian(coord, system="gnomonic") RFearth2cartesian(coord, system="orthographic") ```