R: Segment Distance

segm_distance {pracma} | R Documentation

## Segment Distance

### Description

The minimum distance between a point and a segment, or the minimum distance between points of two segments.

### Usage

    segm_distance(p1, p2, p3, p4 = c())

### Arguments

`p1, p2` | end points of the first segment.
`p3, p4` | end points of the second segment, or the point `p3` alone if `p4` is `NULL`.

### Details

If `p4=c()`, determines the orthogonal line to the segment through the single point and computes the distance to the intersection point.

Otherwise, it computes the distances of all four end points to the other segment and takes the minimum of those.

### Value

Returns a list with component `l` the minimum distance and components `p, q` the two nearest points.

If `p4=c()` then point `p` lies on the segment and `q` is `p4`.

### Note

The interfaces of `segm_intersect` and `segm_distance` should be brought into line.

### See Also

`segm_intersect`

### Examples

    ## Not run:
    plot(c(0, 1), c(0, 1), type = "n", asp=1,
         xlab = "", ylab = "", main = "Segment Distances")
    grid()
    for (i in 1:20) {
        s1 <- matrix(runif(4), 2, 2)
        s2 <- matrix(runif(4), 2, 2)
        lines(s1[, 1], s1[, 2], col = "red")
        lines(s2[, 1], s2[, 2], col = "darkred")
        S <- segm_distance(s1[1,], s1[2,], s2[1,], s2[2,])
        S$d
        points(c(S$p[1], S$q[1]), c(S$p[2], S$q[2]), pch=20, col="navy")
        lines(c(S$p[1], S$q[1]), c(S$p[2], S$q[2]), col="gray")
    }
    ## End(Not run)

[Package pracma version 2.0.4 Index]