Can you help me reverse the Minimum Curvature Method? The minimum curvature method is used in oil drilling to calculate positional data from directional data. A survey is a reading at a certain depth down the borehole that contains measured depth, inclination, and azimuth. Two consecutive surveys (directional data) can then be used to calculate the position of the second survey in x,y,z terms (northing, easting, true vertical depth).
This part is fairly straight-forward. However, I would like to reverse the Minimum Curvature method in order to take two consecutive points, and calculate the directional values for one of the points.
The equations for the Minimum Curvature method are here:
http://www.relps.com/faq/MinimumCurvatureEquations.pdf
My knowns are A1, I1, North, East, and TVD. I am trying to solve for A2, I2, and MD.
I have tried to use a number of tools to solve systems of equations, but without any luck. Can you help?
 A: How accurate do you need to be. Have you tried using average angle calculations? As long as a couple of centimetres one way or the other don't matter the average angle calculation will work. It is going to get messy but you've got 3 equations and so you should be able to solve for your 3 unknown values. 
A: In order to get a better picture you should look at the problem in 2d. Your arc from (x1,y1,z1) to (x2,y2,z2) lives in a 2d plane, also in the same pane the tangents (a1,i1) and (a2, i2). The 2d plane is given by the vector (x1,y1,y3) to (x2,y2,z2) and vector converted from polar to Cartesian of (a1, i1). In case their co-linear is just a straight line and your done. Given the angle between the (x1,y1,z2) and (a1, i1) be alpha, then the angle between  (x2,y2,z2) and (a2, i2) is –alpha. Use the normal vector of the 2d plane and rotate normalized vector (x1,y1,z1) to (x2,y2,z2) by alpha (maybe –alpha) and converter back to polar coordinates, which gives you (a2,i2). If d is the distance from (x1,y1,z1) to (x2,y2,z2) then MD = d* alpha /sin(alpha).
That said, in a directional drilling setting you may get Cartesian coordinates which do not perfectly follow minimum curvature. Furthermore, to reconstruct reasonable well the  inclination and the azimuth the input requires accuracy of close to float, which is typically much smaller than you actual can measure. Just calculate the Cartesian coordinates of your trajectory, round them to 0.01m and try to reconstruct inclination and azimuth.
