The picture above shows a section of 4-in-1 maille. A glossary of the terms I'm using is listed below.
opaque link area
the gray area of the links inside the yellow square
total link area
the whole yellow square
opacity
the ratio of opaque link area to total link area, expressed as a percentage
gap area
the orange section in the middle
max gap
The approximate length of a side of the gap area. Since the links are pulled as far apart as they can, I am assuming the the gap length is at its maximum. The gap area roughly forms a square turned 45°, and the area of a square is length x length, I took the square root of the gap area to get the max gap.
b = a + WireDia
d = RingID
g = 0.5 / d * (d ^ 2 - a ^ 2 + b ^ 2)
e = Sqr(b ^ 2 - g ^ 2)
c = 2 * e 'chord length
r = a
h = r - 0.5 * Sqr(4 * r ^ 2 - c ^ 2)
phi = 2 * Application.WorksheetFunction.Asin(c / (2 * r))
l = r * phi
area = 0.5 * (r * l - c * (r - h))
OpenArea = OpenArea - area
r = b
h = r - 0.5 * Sqr(4 * r ^ 2 - c ^ 2)
phi = 2 * Application.WorksheetFunction.Asin(c / (2 * r))
l = r * phi
area = 0.5 * (r * l - c * (r - h))
OpenArea = OpenArea - area
OpenArea = 8 * OpenArea
End If
ClosedArea = 2 * RingID ^ 2
Opacity4in1a = 1 - OpenArea / ClosedArea
End Function
b = a + WireDia
d = RingID
g = 0.5 / d * (d ^ 2 - a ^ 2 + b ^ 2)
e = Sqr(b ^ 2 - g ^ 2)
c = 2 * e 'chord length
r = a
h = r - 0.5 * Sqr(4 * r ^ 2 - c ^ 2)
phi = 2 * Application.WorksheetFunction.Asin(c / (2 * r))
l = r * phi
area = 0.5 * (r * l - c * (r - h))
OpenArea = OpenArea - area
r = b
h = r - 0.5 * Sqr(4 * r ^ 2 - c ^ 2)
phi = 2 * Application.WorksheetFunction.Asin(c / (2 * r))
l = r * phi
area = 0.5 * (r * l - c * (r - h))
OpenArea = OpenArea - area