circleBoxInt | R Documentation |
Calculates the area of the intersection between a rectangle and and circle.
circleBoxInt(R, S, L, ...)
R |
Numeric, circle radius. |
S |
Numeric, short side of the rectangle |
L |
Numeric, long side of the rectangle |
... |
Currently ignored. |
The rectangle is defined with lower left corner being the origin and upper right corner at (L, S). The area returned is the intersection between the circle, centered at the origin, and the rectangle.
If R \leq S
then (\pi R^2)/4
is returned.
If R \geq \sqrt{S^2 + L^2}
then L*S
is returned.
If R \leq L
then R^2*sin^{-1}(S/R)/2 + S*\sqrt(R^2-S^2)/2
This is the area of a circle in the first quadrant between the horizontial line y=S
if R > L
and R < \sqrt{S^2 + L^2}
then
(R^2*sin^{-1}(S/R)/2 + S*\sqrt(R^2-S^2)/2) - (R^2*sin^{-1}(B/R)/2 + S*\sqrt(R^2-B^2)/2) + B*L
where B = \sqrt{R^2 - L^2}
. In this case the there is part of the circle to the right of the rectangle. First set of parenthesis is the area of the circle below S
, the second set is the area below B
. Substracting the two gives the area between B
and S
. The rectangle defined by B
and L
needs to be added back in.
Numeric value
radius <- 115
short <- 80
long <- 100
circleBoxInt(R=radius,S=short,L=long)
## not run
## the integral is the area inside the polygon
x <- seq(0,max(radius,long),length=100)
outlineY <- function(x,R,S,L){
suppressWarnings(y <- sqrt(R^2-x^2))
y[x>R] <- 0
y[x>L] <- 0
y[y>=S] <- S
return(y)
}
y <- outlineY(x=x,R=radius,S=short,L=long)
plot(x,y,type='l',ylim=c(-10,short))
text(long,0,label='L',pos=1)
text(0,short,label='S',pos=1)
text(long,sqrt(radius^2-long^2),label='B',pos=4)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.