Suppose you had a square intersecting a circle like in Circular Logic, where one vertex is inside the circle and three are outside.
If the vertex inside the circle was not located at the center, but anywhere inside the circle, such that segments ending at that vertex were of length a and b and the circle had radius r, what would be the area of their intersection be?
Note: A geometric solution is expected, without using calculus.
Call the corner on the interior of the circle C. Call the intersections of the sides of the square with the circle A and B. Triangle ABC is a right triangle with AB as the hypotenuse. AB is also a chord of the circle, and the segment of the circle that it defines, along with the right triangle ABC, form the desired area.
The right triangle has area a*b/2.
The hypotenuse has length sqrt(a^2+b^2), and that is also the chord of the circle segment.
Half the arc of the segment is given by arcsin(sqrt(a^2+b^2)/(2*r)), so the whole arc is 2*arcsin(sqrt(a^2+b^2)/(2*r)). This makes the sector of the circle defined by that arc have area pi*r^2 * 2*arcsin(sqrt(a^2+b^2)/(2*r)) / (2*pi) = r^2 * arcsin(sqrt(a^2+b^2)/(2*r)). To get the area of the segment we need to subtract the area of the central triangle from that of the sector. This triangle has sides r, r and sqrt(a^2+b^2), so Heron's formula can be used:
Let s = (2*r+sqrt(a^2+b^2))/2 = r + sqrt(a^2+b^2)/2
This triangle's area is sqrt(s*(s-r)^2*(s-sqrt(a^2+b^2))).
So the area of the segment is r^2 * arcsin(sqrt(a^2+b^2)/(2*r)) - sqrt(s*(s-r)^2*(s-sqrt(a^2+b^2))).
That makes the area of the whole overlap:
r^2 * arcsin(sqrt(a^2+b^2)/(2*r)) - sqrt(s*(s-r)^2*(s-sqrt(a^2+b^2))) + a*b/2.
This has been checked for reasonableness by having a program perform these calculations when (1) a=r and b=r, where the result should be one quarter the area of the full circle, and (2) a = 2*r and b=0, where the result should be half the area of the full circle:
r a b area
5 5 5 19.63495408493621
5 10 0 39.26990816987242
DECLARE FUNCTION arcsin# (x#)
DIM SHARED pi
pi = ATN(1) * 4
r = 5
a = 5: b = 5
a = 10: b = 0
s = r + SQR(a ^ 2 + b ^ 2) / 2
area = r ^ 2 * arcsin(SQR(a ^ 2 + b ^ 2) / (2 * r)) - SQR(s * (s - r) ^ 2 * (s - SQR(a ^ 2 + b ^ 2))) + a * b / 2
PRINT r, a, b, area
FUNCTION arcsin (x)
IF ABS(x) = 1 THEN
arcsin = pi / 2 * SGN(x)
arcsin = ATN(x / SQR(1 - x * x))
Posted by Charlie
on 2006-08-09 10:47:16