Overlapping Minefields Explode
In the 1:1 case, i.e. two hostile minefields overlapping, the following formula is used:
Mines_exploding =
Min(Units_1, Units_2)
...if Dist = 0
Units_1 ...if A < 0
Units_2 ...if A > D
Units_1 - A^2 ...otherwise
...with
D = Distance between minefield centers
A = (Units_1 - Units_2 + D^2) / (2*D)
Units_1, Units_2 =
Number of mine units contained in both fieldsThis formula is used with AlternativeMinesDestroyMines enabled when a minefield is laid or enlarged and overlaps an old one.
During the Mines destroy Mines stage of host processing, PHost uses more complicated formulas. The basic ideas are the following: a minefield that overlaps N hostile minefields shrinks at a speed of N minefield units per time unit. For each minefield pair, we can therefore compute the time until the overlap is gone. PHost now computes the minimum such time, and removes N * Time units from all minefields. At least one overlap is gone now. All the speeds are now recomputed, and the algorithm restarts if overlaps remain.
Time_until_overlap_gone =
Min(U1 / S1, U2 / S2)
...if D=0
(i.e. concentric minefields)
U1 / S1 ...if U2*S1 - U1*S2 ≥ D^2 * S1
(i.e. field 2 eliminates field 1 completely)
U2 / S2 ...if U1*S2 - U2*S1 ≥ D^2 * S2
(i.e. field 1 eliminates field 2 completely)
(U1 - A^2) / S1 ...if S1 = S2
((U1-U2-D^2)*S1 - (U1-U2+D^2)*S2 + 2*Sqrt(D^2 * (U2*S1^2 - (U1+U2-D^2)*S1*S2 + U1*S2^2)))
/ (S1 - S2)^2 ...otherwise
...with
D = Distance between minefield centers
A = (U1 - U2 + D^2) / (2*D)
U1,U2 = Mine units in both fields (Units_1, Units_2)
S1,S2 = Shrink speeds, i.e. overlap counts for both fieldsThe frightening last formula is the solution to Sqrt(U1 - S1*x) + Sqrt(U2 - S2*x) = D obtained using Mathematica.
PHost's actual implementation is heavily optimized for speed. In addition, to guarantee reasonable progress, it always advances time by at least one full unit, which can make a minefield lose a handful more units than required to remove all overlaps.



