pracma (version 1.9.9)

segm_intersect: Segment Intersection

Description

Do two segments have at least one point in common?

Usage

segm_intersect(s1, s2)

Arguments

s1, s2
Two segments, represented by their end points; i.e., s <- rbind(p1, p2) when p1, p2 are the end points.

Value

Logical, TRUE if these segments intersect.

Details

First compares the `bounding boxes', and if those intersect looks at whether the other end points lie on different sides of each segment.

References

Cormen, Th. H., Ch. E. Leiserson, and R. L. Rivest (2009). Introduction to Algorithms. Third Edition, The MIT Press, Cambridge, MA.

See Also

segm_distance

Examples

Run this code
## Not run: 
# plot(c(0, 1), c(0, 1), type="n",
#      xlab = "", ylab = "", main = "Segment Intersection")
# grid()
# for (i in 1:20) {
# s1 <- matrix(runif(4), 2, 2)
# s2 <- matrix(runif(4), 2, 2)
# if (segm_intersect(s1, s2)) {
#     clr <- "red"
#     p1 <- s1[1, ]; p2 <- s1[2, ]; p3 <- s2[1, ]; p4 <- s2[2, ]
#     A <- cbind(p2 - p1, p4 - p3)
#     b <- (p3 - p1)
#     a <- solve(A, b)
#     points((p1 + a[1]*(p2-p1))[1], (p1 + a[1]*(p2-p1))[2], pch = 19, col = "blue")
# } else
#     clr <- "darkred"
# lines(s1[,1], s1[, 2], col = clr)
# lines(s2[,1], s2[, 2], col = clr)
# }## End(Not run)

Run the code above in your browser using DataCamp Workspace