This app was vibe-coded
Scroll to zoom · drag canvas to pan

Picking the ellipse

Two points plus two tangent directions are only four constraints, but an ellipse has five degrees of freedom — so a one-parameter family of ellipses satisfies your input. Each mode picks one member of that family a different way.

Roundest default
Searches the family for the member closest to a circle (the smallest major / minor ratio). If the family contains a true circle, you get it. No value to set.
Apex
A slider that sweeps the whole family. It slides the near apex from the chord between the points (flat, at 0) out toward where the two tangent lines cross; 0.5 is exactly the parabola at the family’s edge, and everything in between is an ellipse.
Rotation
Finds the member whose axes sit at the angle you give (0–90° from the x-axis). Axis alignment pins down a single candidate; angles that don’t correspond to an ellipse raise an error.
Aspect ratio
Finds member(s) with the major / minor ratio you type (≥ 1). The condition is quadratic, so a ratio can match two ellipses — use “Next solution” to switch between them.
Radius rx / ry
Finds member(s) whose semi-major (rx) or semi-minor (ry) radius equals your value — up to two of them. rx can’t be shorter than half the distance between the points.
Third point
The single ellipse that also passes through a third point — drag the yellow point on the canvas, or type its coordinates.

Not every value is reachable: at some settings the family only yields a parabola or hyperbola, which raises an error. Switching modes keeps the current shape whenever possible, so you can refine one ellipse several ways. Rotation, aspect ratio, apex and third-point are exact; roundest, rx and ry use a numerical search, so digits past ~8 figures are optimizer noise.