title: Move object a set distance along an elliptical path
body: <p>I'm looking to create AI that elegantly rounds corners. To compute the path around a corner I have a set of 2d points <code>start</code> and <code>end</code> that exist exclusively as 90 degree angle pairs like in the image below.</p>
  
  <p>Each point is either in the "north", "south", "east", or "west" most portion of the ellipse, and I can extrapolate the <code>a</code> and <code>b</code> values for the major and minor axes of the ellipse along these points.</p>
  
  <p>The simulation is played on a grid, so the ellipse will never be rotated -- the major and minor axes will lie parallel to the x and y axes.</p>
  
  <p><a href="https://i.stack.imgur.com/1NssL.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/1NssL.png" alt="enter image description here"></a></p>
  
  <p>Moving the point along an ellipse by an angle is simple:</p>
  
  <pre><code>x = x + (a * math.cos(angle))  # where a is major axis
  y = y + (b * math.cos(angle))  # where b is minor axis
  </code></pre>
  
  <p>However, I want to control the speed at which the AI traverses across the arc on the ellipse between the two points and eventually have them stop at the <code>end</code> position.</p>
  
  <p>Ultimately, I need to compute the following:</p>
  
  <ol>
  <li>The <code>remaining_distance</code> between <code>start</code> and <code>end</code> along the ellipse</li>
  <li>The new location of a point after moving <code>distance</code> across the ellipse</li>
  </ol>
  
  <p>Questions:</p>
  
  <ol>
  <li>Are there common tools/solutions for computing the above?</li>
  <li>Are there better or more common solutions for this problem in AI, gamedev, or other practices? I saw Bezier curves came up in my search, for example.</li>
  </ol>
  
  <p>Thanks!</p>
  
  <hr>
  
  <p>Meta:</p>
  
  <p>I found similar questions asking for this problem on the stack exchange, but none really seemed to fit my use case or answered the question by offering language-specific non-python solutions.</p>
  
  <p>I chose to ask here rather than the mathematics stack exchange, because I imagine there may be other solutions for the same problem more commonplace in gamedev and other programming projects.</p>