Calculates ray parameter and azimuth of a ray that reaches some given point, using a 2-D iterative optimization search.

1 | ```
P4X.lin(x, y, zs, zr, ATM = CheckAtm.lin(list()), maxerror = 3)
``` |

`x` |
Abscissa of receiver relative to source (m) |

`y` |
Ordinate of receiver relative to source (m) |

`zs` |
Elevation of source (m) |

`zr` |
Elevation of receiver (m) |

`ATM` |
Linear atmosphere |

`maxerror` |
Maximum permitted error for solution (m) |

'maxerror' should be set with the necessary arrival time precision in mind. Smaller values of maxerror will produce more accurate arrival locations (and arrival times), but will require longer calculation times.

List with following elements:

`p` |
ray parameter |

`az` |
azimuth |

`error` |
distance between inputs (x,y) and final position of result ray |

Jake Anderson

1 2 3 | ```
ATM = CheckAtm.lin()
P4X.lin(100, 100, 100, 00, ATM)
P4X.lin(100, 100, 100, 00, ATM, 0.01)
``` |

Questions? Problems? Suggestions? Tweet to @rdrrHQ or email at ian@mutexlabs.com.

All documentation is copyright its authors; we didn't write any of that.