This is the 2D-native pair to the 3D Roche-lobe simulator, computing the identical corotating-frame potential a different way. Instead of ray-marching a 3D isosurface mesh viewed by a camera, this view samples the same scalar field directly on a 2D grid covering the orbital plane and colors it like a topographic map — dark wells around each star, a saddle at L1:
Φ(x,y) = -GM1/r1 - GM2/r2 - ½ω²(x²+y²)
ω² = G(M1+M2)/a³ (Kepler's third law)
The L1 point is still found by bisecting dΦ/dx = 0 along the star-star axis, exactly as in the 3D model. The Roche-lobe outline — the same critical equipotential Φ = Φ(L1) that the 3D view builds into a mesh by ray-marching every direction in 3D — is instead traced here with marching squares: a classic 2D field-contouring algorithm that walks the grid and linearly interpolates exactly where the field crosses the critical level, producing the true dumbbell-shaped lobe pinched at L1 as a single closed curve.
Donor Roche-lobe radius (Eggleton 1983 fit, ~1% accurate):
R_L/a = 0.49 q^(2/3) / [0.6 q^(2/3) + ln(1+q^(1/3))], q = M_donor/M_accretor
When the donor's fill factor exceeds 1, gas spills through L1 into a mass-transfer stream. The stream particles are integrated with the exact planar equations of motion — gravity from both stars plus the centrifugal and Coriolis terms of the rotating frame:
a_x = M1(x-x1)/r1³ + M2(x-x2)/r2³ - ω²x + 2ω·vy
a_y = M1·y/r1³ + M2·y/r2³ - ω²y - 2ω·vx (Coriolis)
Zero out-of-plane velocity is an exact invariant of these equations (the z-acceleration is identically zero on z=0), so restricting the stream to the orbital plane is not an approximation of the 3D model — it is the same physics, viewed edge-on. Real systems: cataclysmic variables, X-ray binaries and Algol-type eclipsing binaries all transfer mass through exactly this planar channel.