Move Point To Nearest Line
Given a point pattern and a line segment pattern, this function moves each point to the closest location on a line segment.
project2segment(X, Y)
X |
A point pattern (object of class |
Y |
A line segment pattern (object of class |
For each point x
in the point pattern X
, this function
finds the closest line segment y
in the line segment pattern
Y
. It then ‘projects’ the point x
onto the line segment
y
by finding the position z
along y
which is closest to x
. This position z
is returned,
along with supplementary information.
A list with the following components. Each component has length equal to
the number of points in X
, and its entries correspond to the
points of X
.
Xproj |
Point pattern (object of class |
mapXY |
Integer vector identifying the nearest segment to each point. |
d |
Numeric vector of distances from each point of |
tp |
Numeric vector giving the scaled parametric coordinate 0 <= tp <= 1 of the position of the projected point along the segment. |
For example suppose mapXY[2] = 5
and tp[2] = 0.33
.
Then Y[5]
is the line segment lying closest to X[2]
.
The projection of the point X[2]
onto the segment Y[5]
is the point Xproj[2]
, which lies one-third of the way
between the first and second endpoints of the line segment Y[5]
.
Adrian Baddeley Adrian.Baddeley@curtin.edu.au
and Rolf Turner r.turner@auckland.ac.nz
nearestsegment
for a faster way to determine
which segment is closest to each point.
X <- rsyst(square(1), nx=5) Y <- as.psp(matrix(runif(20), 5, 4), window=owin()) plot(Y, lwd=3, col="green") plot(X, add=TRUE, col="red", pch=16) v <- project2segment(X,Y) Xproj <- v$Xproj plot(Xproj, add=TRUE, pch=16) arrows(X$x, X$y, Xproj$x, Xproj$y, angle=10, length=0.15, col="red")
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.