如何找到多个点之间所有点的坐标?

时间:2020-10-12 10:14:57

标签: r point-in-polygon

在这个问题中,我有几个要点,我们称它们为A,B和C(但可以更多),我知道它们在(x,y)中的位置。我在两个轴上的定义区域也都在[1-n]之间。我需要找到落在由A,B和C生成的多边形中的所有点。

由于我没有一组点,因此我想同时使用x和y轴的整个范围,即[1-n],因为这组可能的点落在A,B生成的多边形中,以及C,但我不确定这是否可以用于该功能。

在这个阶段,我尝试了一些涉及以下功能的事情(其中一些我在SO中发现了其他问题)。

#define the range as the possible points falling in the polygon
allPointsX <- allPointsY <- c(1:2048)
#get some coordinates for three points generating the actual polygon (which in this case is a simple triangle)
xCoord <- c(127, 120, 152)
yCoord <- c(77, 96, 107)
#look for points into the polygon
points <- point.in.polygon(allPointsX, allPointsY, xCoord, yCoord)

但是我没有得到输出(全为零:all(points==0)),或者这不是我想要的。

有什么建议吗?我想念什么?

1 个答案:

答案 0 :(得分:2)

您的代码正确。只是您所有的点都位于三角形之外。

library(tidyverse)

ggplot(mapping = aes(x, y)) +
  geom_point(data = tibble(x = allPointsX, y = allPointsY)) +
  geom_polygon(data = tibble(x = xCoord, y = yCoord)) +
  xlim(75, 160) +
  ylim(75, 160)

plot

这是位于三角形内部的一个点。

sp::point.in.polygon(127, 78, xCoord, yCoord)
#> [1] 1
相关问题