Skip to content
Prev 278247 / 398503 Next

x, y for point of intersection

Monica Pisica <pisicandru <at> hotmail.com> writes:
set.seed(123)
    k1 <-rnorm(100, mean=1.77, sd=3.33)
    k1 <- sort(k1)
    
    q1 <- rnorm(100, mean=2.37, sd=0.74)
    q1 <- sort(q1, decreasing = TRUE)
    
    plot(k1, q1, xlim <- c((min(k1)-5), (max(k1)+5)), type="l")
    
    xa <- -5; ya <- 2
    xb <- 12; yb <- 4
    
    lines(c(xa, xb), c(ya, yb), col = 2)
You could apply the function segm_distance in package 'pracma'. If the 
distance between two segments is 0, it returns the intersection point:

    p1 <- c(xa, ya); p2 <- c(xb, yb)
    for (i in 2:100) {
        p3 <- c(k1[i-1], q1[i-1]); p4 <- c(k1[i], q1[i])
        s <- segm_distance(p1, p2, p3, p4)
        if (s$d == 0) break
    }
    s$p  # 0.2740154 2.6204724
    points(s$p[1], s$p[2], pch="+", col="red")