If the red one approximates the black one perfectly, it’ll look like the picture below. The red mesh will deviate from the black one evenly, and share the same centroid with it.
Now my rough plan is to use the GHPython component, and do the loop of the below steps:
(1) Making section curves of the 2 ellipses.
(2) Using the Rhino command CrvDeviation. Finding the point that deviates most, then I can get the deviation distance and approximation vector. Like the picture below.
BTW: you may add some option as well (like using the crvs centroids etc).
BTW: you may replace Crvs with Meshes (if so use Mesh Vertices instead of division pts). Or (general case: mixed input) declare master, slave as GeometryBase Type and act accordingly for finding the m/sPts.
In any case use a Point3dList or a RTree for defining the Vectors.