Learn R Programming

smacpod (version 2.6)

circles.intersect: Determine whether circles intersect

Description

circles.intersect determines whether circles intersect with each other.

Usage

circles.intersect(coords, r)

Value

Returns a matrix of logical values indicating whether the circles intersect.

Arguments

coords

A matrix of coordinates with the centroid of each circle.

r

A vector containing the radii of the circles. The length of r must equal the number of rows of coords.

Author

Joshua French

Details

The algorithm is based on the premise that two circles intersect if, and only if, the distance between their centroids is between the sum and the difference of their radii. I have squared the respective parts of the inequality in the implemented algorithm.

Examples

Run this code
# first two circles intersect each other, 
# the next two circles intersect each other 
# (but not the previous ones)
# the last circles doesn't intersect any other circle
co = cbind(c(1, 2, 5, 6, 9), c(1, 2, 5, 6, 9))
r = c(1.25, 1.25, 1.25, 1.25, 1.25)
# draw circles
circles.plot(co, r)
# confirm intersections
circles.intersect(co, r)

# nested circles (don't intersect)
co = matrix(rep(0, 4), nrow = 2)
r = c(1, 1.5)
circles.plot(co, r)
circles.intersect(co, r)

Run the code above in your browser using DataLab